2179: 紧急营救

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 89  Solved: 9

SubmitStatusWeb Board

Description

冷锋在非洲完成任务后回到了狼牙特种作战部队。我们知道在战狼二结尾,冷锋正在北极执行任务,而部队发现了龙小云在c国的消息,让冷锋尽快赶往c国。我们知道现在地球上共有n个国家和地区,编号分别为1,2,3...n。国家与国家之间的可能通航班(可能不止一次),也可能没有通航班。共有m次航班,冷锋已经知道了这m次航班的信息(起点
终点,时间)北极的编号是1,c国的编号是n。

而冷峰身为超级英雄一样的的存在,他有一次将航班的时间降为零的能力。

Input

样例数t(t<=10),接下来又t组样例。 每组样例先输入n , m(n<=1000 , m<=n*(n-1)/2)。

下面m行航班的信息,分别为start , end , time(time <= 100000).

Output

对每组样例,输出冷锋到达c国的最短时间,若不能到达输出 "Impossible"。

Sample Input

3
3 1
1 2 1
4 3
1 2 4
2 3 1
2 4 4
3 3
1 2 100000
2 3 1
1 3 2

Sample Output

Impossible
4
0
不知道是我语文没学好还是怎么着,题目描述的显然是有向图竟然改成无向图才能A,真是醉了= =
如果是无向图需要反向建边,不过无向得话就不必要了,跑两次最短路,分别以1和N为起点,然后枚举每一条边为零,看看是否能更新这条1-N的最短路。
 #include<bits/stdc++.h>
using namespace std;
#define LL long long
#define inf 0x3f3f3f3f
const int maxn=;
struct Edge{int u,v,w;};
vector<Edge>G[maxn];
int d1[],d2[];
void spfa(int s,int *d)
{
bool vis[];
memset(vis,,sizeof(vis));
memset(d,inf,sizeof(int)*);
queue<int>Q;
Q.push(s);
vis[s]=;
d[s]=;
while(!Q.empty()){
int u=Q.front(); Q.pop();
vis[u]=;
for(int i=;i<G[u].size();++i){
Edge x=G[u][i];
if(d[x.v]>d[u]+x.w){
d[x.v]=d[u]+x.w;
if(!vis[x.v]){
vis[x.v]=;
Q.push(x.v);
}
}
}
}
}
int main()
{
//freopen("in.txt","r",stdin);
int T,N,M,i,j,k;
int u,v,w;
cin>>T;
while(T--){
scanf("%d%d",&N,&M);
for(i=;i<M;++i){
scanf("%d%d%d",&u,&v,&w);
G[u].push_back(Edge{u,v,w});
G[v].push_back(Edge{v,u,w});
}
spfa(,d1);
spfa(N,d2);
int ans=inf;
for(i=;i<=N;++i)
{
for(j=;j<G[i].size();++j)
{
ans=min(ans,d1[i]+d2[G[i][j].v]);
}
}
for(i=;i<=N;++i) G[i].clear();
if(ans==inf) puts("Impossible");
else cout<<ans<<endl;
}
return ;
}
//注释freopen语句!!!

zzuli 2179 最短路的更多相关文章

  1. bzoj1001--最大流转最短路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...

  2. 【USACO 3.2】Sweet Butter(最短路)

    题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...

  3. Sicily 1031: Campus (最短路)

    这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...

  4. 最短路(Floyd)

    关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...

  5. bzoj1266最短路+最小割

    本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...

  6. HDU2433 BFS最短路

    Travel Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. 最短路(代码来源于kuangbin和百度)

    最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ...

  8. Javascript优化细节:短路表达式

    什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程 ...

  9. Python中三目计算符的正确用法及短路逻辑

    今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘. 短路逻辑 Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接 ...

随机推荐

  1. ssh登陆github

    ssh [转载] 如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别.为了保证你现在所学的Git物超所值,将来绝对不会后悔,同时为了打击已经不幸学了SVN的童鞋,本章开始介绍Git的杀手级功能 ...

  2. 我的Android进阶之旅------>Android自定义View实现带数字的进度条(NumberProgressBar)

    今天在Github上面看到一个来自于 daimajia所写的关于Android自定义View实现带数字的进度条(NumberProgressBar)的精彩案例,在这里分享给大家一起来学习学习!同时感谢 ...

  3. springboot整合fastjson 将null转成空字符串

    /** * @Auther: mxf * @Date: 2019/4/18 09:12 * @Description: */ @Configuration @EnableWebMvc public c ...

  4. mysql第三天作业

    1.将所有的课程的名称以及对应的任课老师姓名打印出来,如下:SELECT cname,tname FROM course LEFT JOIN teacher ON teacher.tid=course ...

  5. 第六课 GDB调试 (上)

    1序言: 1.初学者经过学习前面的Makefile知识,信心满满,内心觉得应该要好好学习不单掌握语言的编写,也要学会相对应的工具调高开发效率.有时我们写出来的代码经过执行结果却跟我们预期不一样那怎么办 ...

  6. leetcode每日一题——反转整数

    题目: 反转整数 难度: 简单 描述: 给定一个 32 位有符号整数,将整数中的数字进行反转. 解法: class Solution { public int reverse(int x) { //i ...

  7. Java并发之CyclicBarria的使用(二)

    Java并发之CyclicBarria的使用(二) 一.简介 之前借助于其他大神写过一篇关于CyclicBarria用法的博文,但是内心总是感觉丝丝的愧疚,因为笔者喜欢原创,而不喜欢去转载一些其他的文 ...

  8. 利用cgroup控制进程使用的资源(cpu、内存等)

    实验环境:centos 6.10 1.安装libcgroup yum install -y libcgroup 2.进入资源控制器默认挂载目录/cgroup [root@hadoop1 cgroup] ...

  9. ES6 随记(3.3)-- 数组的拓展

    上一章请见: 1. ES6 随记(1)-- let 与 const 2. ES6 随记(2)-- 解构赋值 3. ES6 随记(3.1)-- 字符串的拓展 4. ES6 随记(3.2)-- 正则的拓展 ...

  10. qt项目: error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1900”不匹配值“1800”

    error LNK2038: 检测到“_MSC_VER”的不匹配项:  值“1900”不匹配值“1800” 该错误 网上通常的解释是: 原因:由于你使用了vs2012,相比较vs2010以及之前的vs ...