11374 - Airport Express 一直都是wa不知道为什么
2014-12-31 14:38
211 查看
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=25&problem=2369&mosmsg=Submission+received+with+ID+14744132
这是我的测试数据
4 1 4
4
1 2 2
1 3 3
2 4 4
3 4 5
1
2 4 3
4 1 4
4
1 2 2
1 3 3
2 4 4
3 4 5
1
2 4 5
5 1 5
4
1 2 2
3 4 2
2 4 3
3 5 4
1
3 4 1
5 1 5
4
1 2 2
2 3 1
3 5 4
2 4 3
3 4 2
1
3 4 1
#define _CRT_SECURE_NO_WARNINGS // #include<iostream> #include<algorithm> #include<cstdio> #include<string.h> #include<stdio.h> #include<math.h> #include<vector> #include<queue> using namespace std; const int MAXN = 2000; int N, S, E; int M,K; int x[MAXN], y[MAXN], w[MAXN]; const int INF = 0x3F3F3F3F;// 1000000; struct Edge { int from, to, dist; }; struct HeadNode { int d, u; bool operator<(const HeadNode& hrs)const{ return d>hrs.d; } }; int d[2][MAXN]; int p[2][MAXN]; struct Dijkstra { int n,m; vector<Edge> edges; vector<int> G[MAXN];//每个点对应的边id bool done[MAXN]; void init(int n){ this->n = n; for (int i = 0; i < n; i++) { G[i].clear(); } edges.clear(); } void AddEdge(int from, int to, int dist){ Edge e = {from,to,dist}; edges.push_back(e); G[e.from].push_back(edges.size()-1); } void dijkstra(int s,int id){ priority_queue<HeadNode> Q; for (int i = 1; i <= n; i++) d[id][i] = INF; d[id][s] = 0; memset(done,0,sizeof(done)); HeadNode headnode = {0,s}; Q.push(headnode); while (!Q.empty()) { HeadNode x = Q.top(); Q.pop(); if (done[x.u])continue; done[x.u] = true; for (int i = 0; i < G[x.u].size(); i++) { Edge edge=edges[G[x.u][i]]; if (d[id][edge.to]>d[id][edge.from] + edge.dist){ d[id][edge.to] = d[id][edge.from] + edge.dist; p[id][edge.to] = edge.from; HeadNode h = { d[id][edge.to], edge.to }; Q.push(h); } } } } }; void printA(int k, int id){ if (k == S){ printf("%d", k); return; } if (id == 0)//开头开始 { int pre = p[id][k]; printA(pre, id); if (!pre)return; printf(" %d", k); } } void printB(int k, int id){ if (k == E){ printf(" %d", k); return; } if (id == 1)//结尾开始 { int pre = p[id][k]; printf(" %d", k); if (!pre)return; printB(pre, id); } } int main(){ freopen("d:\\uva_in.txt", "r", stdin); int ca = 1; bool ok = 0; while (~scanf("%d%d%d", &N, &S, &E)){ if (ok)printf("\n\n"); ok = 1; Dijkstra dij; dij.init(N); scanf("%d",&M); for (int i = 0; i < M; i++) { int a, b, c; scanf("%d%d%d", &a, &b, &c); dij.AddEdge(a, b, c); dij.AddEdge(b, a, c); } dij.dijkstra(S,0); dij.dijkstra(E,1); scanf("%d", &K); int min = d[0][E]; int targe1, targe2,ID=-1; for (int i = 0; i < K; i++) { int a, b, c; scanf("%d%d%d", &a, &b, &c); if (min>d[0][a] + c + d[1][b]){ min = d[0][a] + c + d[1][b]; targe1 = a; targe2 = b; ID = i; } if (min>d[0][b] + c + d[1][a]){ min = d[0][b] + c + d[1][a]; targe1 = b; targe2 = a; ID = i; } } if (ID == -1){ printA(E, 0); printf("\nTicket Not Used"); } else{ printA(targe1, 0); printB(targe2, 1); printf("\n%d", targe1); } printf("\n%d", min); } }
这是我的测试数据
4 1 4
4
1 2 2
1 3 3
2 4 4
3 4 5
1
2 4 3
4 1 4
4
1 2 2
1 3 3
2 4 4
3 4 5
1
2 4 5
5 1 5
4
1 2 2
3 4 2
2 4 3
3 5 4
1
3 4 1
5 1 5
4
1 2 2
2 3 1
3 5 4
2 4 3
3 4 2
1
3 4 1
相关文章推荐
- 为什么我的代码一直都是WA,求大神指点
- ZOJ2110/HUD1010骨头的诱惑(HDUAC2,ZOJWA但是不知道为什么。。。)
- uva10010 wa不知道为什么
- HDOJ 1010 深度优先搜索 用例过了还是WA了不知道为什么
- 为什么还原sqlserver数据库的状态一直都是正在还原
- 我在android上面调用PKCS7Padding 是没有问题的,但是在java写的服务端就有问题了。不知道为什么,我用的jdk都是1.8.0的jdk。
- HDU2043,两段代码一模一样,一个AC了,一个WA,不知道为什么
- 一直都知道final修饰的类不能被继承,但是不知道为什么不能被继承!
- 挑战 P243 poj3686 (WA) 最小费用流,不知道为什么。
- 编程之美格格取数(为什么一直是WA,求测试)
- 为什么你一直没有成就?
- 空间一直都是网站生存的根本
- zcmu1733: 词组缩写 一直wa????
- 不知道是为什么?
- 为什么iPhone应用图标都是圆角?还是要从乔布斯说起
- 原来这就是为什么360一直支持XP的秘密
- POJ-2575(用例能过,但一直WA)
- cf 323A A. Black-and-White Cube 立体构造 不知道为什么当k为奇数时构造不出来 挺有趣的题目吧
- 输入用户名和密码登入到服务器,却显示指定的网络密码不正确,输入了好几次都是这样,这是怎么回事? 用户名和密码没问题 ,一直用的好好地今天就不行了
- 抱怨CSDN为什么资料一直不完整,你要闹哪样