http://acm.hdu.edu.cn/showproblem.php?pid=4479
2013-04-01 11:50
281 查看
题目意思:求递增的最短路
思路,先对所有边进行排序,逐层进行算最短路
代码:
View Code
思路,先对所有边进行排序,逐层进行算最短路
代码:
View Code
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; #define M 50001 #define N 10001 __int64 inf = 10000000000000000LL; struct st { int u,v,w; }p[M]; __int64 d ,dd[M * 5],flag ,vv[M * 5]; int n,m; bool fan(struct st A,struct st B) { if(A.w < B.w) return true; return false; } void solve(int st,int en) { int cnt = 0; for(int i = st;i < en;i ++) { int r = p[i].u,l = p[i].v,dis = p[i].w; if(flag[r] && d[l] > d[r] + dis) { dd[cnt] = d[r] + dis; vv[cnt] = l; cnt ++; } if(flag[l] && d[r] > d[l] + dis) { dd[cnt] = d[l] + dis; vv[cnt] = r; cnt ++; } } for(int i = 0;i < cnt;i ++) { d[vv[i]] = min(d[vv[i]],dd[i]); flag[vv[i]] = 1; } } int main() { int t; scanf("%d",&t); while(t --) { memset(flag,0,sizeof(flag)); scanf("%d %d",&n,&m); for(int i = 1;i <= n;i ++) d[i] = inf; d[1] = 0; flag[1] = 1; for(int i = 1;i <= m;i ++) scanf("%d %d %d",&p[i].u,&p[i].v,&p[i].w); sort(p + 1,p + m + 1,fan); int i,j; for(i = 1;i <= m;i ++) { for(j = i + 1;j <= m;j ++) if(p[i].w != p[j].w) break; solve(i,j); i = j - 1; } if(d == inf) printf("No answer\n"); else printf("%I64d\n",d ); } return 0; }
相关文章推荐
- http://acm.hdu.edu.cn/showproblem.php?pid=1087
- http://acm.hdu.edu.cn/showproblem.php?pid=2112
- http://acm.hdu.edu.cn/showproblem.php?pid=2363
- hdu 2099 整数的尾数 http://acm.hdu.edu.cn/showproblem.php?pid=2099
- http://acm.hdu.edu.cn/showproblem.php?pid=1075&&字典树
- http://acm.hdu.edu.cn/showproblem.php?pid=2441 犀利的证明
- http://acm.hdu.edu.cn/showproblem.php?pid=1907,与杭电2509题类似。
- http://acm.hdu.edu.cn/showproblem.php?pid=1060
- hdu 2189 http://acm.hdu.edu.cn/showproblem.php?pid=2189
- Beans http://acm.hdu.edu.cn/showproblem.php?pid=2845
- http://acm.hdu.edu.cn/showproblem.php?pid=3790
- Happy 2004&&http://acm.hdu.edu.cn/showproblem.php?pid=1452
- http://acm.hdu.edu.cn/showproblem.php?pid=1787 典型 欧拉函数(为何c++ 那样会RE)
- http://acm.hdu.edu.cn/showproblem.php?pid=1709
- http://acm.hdu.edu.cn/showproblem.php?pid=2689
- http://acm.hdu.edu.cn/showproblem.php?pid=2227&&树状数组+离散化+dp
- http://acm.hdu.edu.cn/showproblem.php?pid=3521 (暴力)
- Holedox Eating &&http://acm.hdu.edu.cn/showproblem.php?pid=4302
- http://acm.hdu.edu.cn/showproblem.php?pid=1004
- http://acm.hdu.edu.cn/showproblem.php?pid=1166 更新节点,区间求和