优化下的来去问题
来源:互联网 发布:魔改坊贞德淘宝 编辑:程序博客网 时间:2024/05/22 03:35
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<algorithm>using namespace std;#define N 1000100#define INF 10000000000LLint n,m;int visit[N];int situation[N];int a,b;long long c,dis[N];long long cnt;struct node{int st,en;long long co;}edge1[N],edge2[N];void SPFA(struct node edge[]){for(int i=0;i<N;i++){dis[i]=INF;visit[i]=0;}visit[1]=1;dis[1]=0;queue<int>que;que.push(1);while(!que.empty()){int t=que.front();que.pop();visit[t]=0;for(int i=situation[t];edge[i].st==t;i++){if(dis[edge[i].en]>dis[t]+edge[i].co){dis[edge[i].en]=dis[t]+edge[i].co;if(visit[edge[i].en]==0){visit[edge[i].en]=1;que.push(edge[i].en);}}}}}void init(struct node edge[]){for(int i=0;i<N;i++)situation[i]=0;situation[edge[1].st]=1;for(int i=2;i<=m;i++){if(edge[i].st!=edge[i-1].st)situation[edge[i].st]=i;}}bool cmp(struct node a,struct node b){return a.st<b.st;}int main(){int t;scanf("%d",&t);while(t--){scanf("%d %d",&n,&m);for(int i=1;i<=m;i++){scanf("%d %d %I64d",&a,&b,&c);edge1[i].st=a;edge1[i].en=b;edge1[i].co=c;edge2[i].st=b;edge2[i].en=a;edge2[i].co=c;}cnt=0; sort(edge1+1,edge1+m+1,cmp); sort(edge2+1,edge2+m+1,cmp); init(edge1); SPFA(edge1); for(int i=1;i<=n;i++)cnt+=dis[i]; init(edge2); SPFA(edge2); for(int i=1;i<=n;i++) cnt+=dis[i]; printf("%I64d\n",cnt);} return 0;}
0 0
- 优化下的来去问题
- 创建,提交,查询的来去Json数据格式
- 第九章第三节、来去明白的三个理由
- 2011-03-09---14来去匆匆的武子
- 关于android来去电监控的一点总结
- 4.1 来去电时更改归属地显示的位置
- 来去匆匆
- 多线程下,生产者消费者锁的优化问题
- 凸限制下的凸优化问题(一)
- 多线程环境过度优化下的CPU乱序问题
- 简单聊下Android性能优化与内存优化的问题
- 汇编程序的优化问题
- 优化问题的思考
- 编译器的优化问题
- MySQL的优化问题
- Mysql的优化问题
- UITableView的优化问题
- ListView的优化问题
- Go语言并发之美
- How Tomcata work之第十五章之ContextConfig
- iOS申请证书,Certificates, Identifiers &Profiles 简介
- STL map与Boost unordered_map
- Oracle服务脚本启动、关闭(windows)
- 优化下的来去问题
- hive命令汇总
- CCOrbitCamera的使用
- UVa 140 - BandWidth (暴力)
- 一个苹果证书怎么多次使用——导出p12文件
- hdu 4856 Tunnels(动态规划&状态压缩)
- 数据可视化之Processing【1】
- UVA 10023 Square root
- 【黑马程序员】Java基础学习总结博客——流程控制