当前位置: 首页 > news >正文

90分 蓝桥杯 算法提高 道路和航路 [ 最短路 ]

传送门

  算法提高 道路和航路  
时间限制:1.0s   内存限制:256.0MB
   
锦囊1
 
锦囊2
 
锦囊3
 
问题描述

农夫约翰正在针对一个新区域的牛奶配送合同进行研究。他打算分发牛奶到T个城镇(标号为1..T),这些城镇通过R条标号为(1..R)的道路和P条标号为(1..P)的航路相连。

每一条公路i或者航路i表示成连接城镇Ai(1<=A_i<=T)和Bi(1<=Bi<=T)代价为Ci。每一条公路,Ci的范围为0<=Ci<=10,000;由于奇怪的运营策略,每一条航路的Ci可能为负的,也就是-10,000<=Ci<=10,000。

每一条公路都是双向的,正向和反向的花费是一样的,都是非负的。

每一条航路都根据输入的Ai和Bi进行从Ai->Bi的单向通行。实际上,如果现在有一条航路是从Ai到Bi的话,那么意味着肯定没有通行方案从Bi回到Ai

农夫约翰想把他那优良的牛奶从配送中心送到各个城镇,当然希望代价越小越好,你可以帮助他嘛?配送中心位于城镇S中(1<=S<=T)。

输入格式

输入的第一行包含四个用空格隔开的整数T,R,P,S。

接下来R行,描述公路信息,每行包含三个整数,分别表示Ai,Bi和Ci

接下来P行,描述航路信息,每行包含三个整数,分别表示Ai,Bi和Ci

输出格式
输出T行,分别表示从城镇S到每个城市的最小花费,如果到不了的话输出NO PATH。
样例输入
6 3 3 4 1 2 5 3 4 5 5 6 10 3 5 -100 4 6 -100 1 3 -10
样例输出
NO PATH NO PATH 5 0 -95 -100
数据规模与约定

对于20%的数据,T<=100,R<=500,P<=500;

对于30%的数据,R<=1000,R<=10000,P<=3000;

对于100%的数据,1<=T<=25000,1<=R<=50000,1<=P<=50000。

 

521961609738062@qq.com道路和航路04-09 10:531.248KBC++运行超时90运行超时5.187MB评测详情

 

 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <cstdio>
 4 #include <algorithm>
 5 #include <cstring>
 6 #include <vector>
 7 #include <queue>
 8 using namespace std;
 9 
10 #define ll long long
11 
12 const int N = 25005;
13 const ll inf = 0x3f3f3f3f;
14 int n,r,p,s;
15 ll v[N];
16 typedef struct
17 {
18     ll cost;
19     int to;
20 }PP;
21 
22 vector<PP> G[N];
23 int vis[N];
24 
25 void bellman()
26 {
27     memset(vis,0,sizeof(vis));
28     fill(v,v+1+n,inf);
29     v[s]=0;
30     queue<int> que;
31     que.push(s);
32     vis[s]=1;
33     int i;
34     int to;
35     ll cost;
36     while(que.size()>=1)
37     {
38         int te=que.front();
39         que.pop();
40         for(i=0;i<G[te].size();i++){
41             to=G[te][i].to;
42             cost=G[te][i].cost;
43             if(v[to]>v[te]+cost){        
44                 v[to]=v[te]+cost;
45                 if(vis[to]==0){
46                     vis[to]=1;
47                     que.push(to);
48                 }    
49             }
50         }
51         vis[te]=0;
52     }
53 }
54 
55 int main()
56 {
57     int i;
58     //freopen("data.in","r",stdin);
59     scanf("%d%d%d%d",&n,&r,&p,&s);
60     for(i=0;i<=n;i++){
61         G[i].clear();
62     }
63     PP te;
64     int uu,vv;
65     ll cost;
66     for(i=1;i<=r;i++){
67         scanf("%d%d%I64d",&uu,&vv,&cost);
68         te.cost=cost;
69         te.to=vv;
70         G[uu].push_back(te);
71         te.to=uu;
72         G[vv].push_back(te);
73     }
74     for(i=1;i<=p;i++){
75         scanf("%d%d%I64d",&uu,&vv,&cost);
76         te.cost=cost;
77         te.to=vv;
78         G[uu].push_back(te);
79     }
80     bellman();
81     for(i=1;i<=n;i++){
82         if(v[i]==inf){
83             printf("NO PATH\n");
84         }
85         else{
86             printf("%I64d\n",v[i]);
87         }
88     }
89     return 0;
90 }

 

转载于:https://www.cnblogs.com/njczy2010/p/4409111.html

相关文章:

  • linux一次卸载多个软件
  • 《大话数据结构》读书笔记(一)
  • Tyvj3632|超级英雄Hero
  • 如何从mysql数据库中取到随机的记录
  • soapUI使用-DataSource获取oracle库中的参数
  • POJ - 1584 A Round Peg in a Ground Hole(判断凸多边形,点到线段距离,点在多边形内)...
  • 生产服务器环境最小化安装后 Centos 6.5优化配置备忘
  • 基于阿里云数加构建企业级数据分析平台
  • 关于 来源: volmgr Event ID: 46 故障转储初始化未成功 的问题
  • 深入理解计算机操作系统(十)
  • 机器学习数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
  • tornado
  • SV中的task和function
  • 深度学习优化入门:Momentum、RMSProp 和 Adam
  • 在CentOS 7系统上搭建LAMP
  • CentOS6 编译安装 redis-3.2.3
  • Vim 折腾记
  • vue-router 实现分析
  • 从零开始学习部署
  • 对超线程几个不同角度的解释
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 老板让我十分钟上手nx-admin
  • 力扣(LeetCode)56
  • 思否第一天
  • 思维导图—你不知道的JavaScript中卷
  • 我从编程教室毕业
  • 无服务器化是企业 IT 架构的未来吗?
  • 一天一个设计模式之JS实现——适配器模式
  • 一文看透浏览器架构
  • 源码安装memcached和php memcache扩展
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 1.Ext JS 建立web开发工程
  • elasticsearch-head插件安装
  • 说说我为什么看好Spring Cloud Alibaba
  • ​学习一下,什么是预包装食品?​
  • # Maven错误Error executing Maven
  • #include<初见C语言之指针(5)>
  • #pragam once 和 #ifndef 预编译头
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (一)基于IDEA的JAVA基础12
  • .bat文件调用java类的main方法
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core Web APi类库如何内嵌运行?
  • .Net Remoting(分离服务程序实现) - Part.3
  • [BJDCTF2020]The mystery of ip
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间
  • [LeetCode] Binary Tree Preorder Traversal 二叉树的先序遍历
  • [MFC] VS2013版本MFC工程移植到VC6.0上