最短路_HDU_4370
来源:互联网 发布:chrome 淘宝联盟插件 编辑:程序博客网 时间:2024/05/22 07:06
/*我溜啊,太神了,给定的关系居然能转换成酱紫的一副图的问题,完全没有这方面的觉悟啊X12+X13+……+X1n=1可以翻译为1的初度是1X1n+X2n+……+Xn-1n=1则翻译为n的入度是1Xki(1<=k<=n) = Xij(1<=j<=n)表示为其他点的入度等于出度所以说1到n跑一遍最短路就妥妥的了,这刚好满满足条件但是,题给又没有说1的入度和n的出度情况,所以,可能在1跟n存在环存在那么1到n的环又是如何考虑呢?也就是说到1可以在次考虑那么就是在跑最短路的时候,dis[star]先设置为oo, 其他与star链接的点更新距离,并入栈*/#include<iostream>#include<cstring>#include<cstdio>#include<queue>#define oo 0x3f3f3f3fconst int maxn = 350;using namespace std;int n;int mp[maxn][maxn];int vis[maxn],dis[maxn];queue<int> que;void SPFA(int s){ while(!que.empty())que.pop(); for(int i = 1; i<= n; i++) { if(i ==s) { dis[i] = oo; vis[i] = 0; } else { dis[i] = mp[s][i]; que.push(i); vis[i] = 1; } } while(!que.empty()) { int u = que.front(); que.pop(); for(int v = 1; v <= n; v++) { if(dis[v]>dis[u]+mp[u][v]) { dis[v] = dis[u]+mp[u][v]; if(!vis[v]) { vis[v] = 1; que.push(v); } } } vis[u] = 0; }}int main(){ while(scanf("%d",&n)!=EOF) { for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { scanf("%d",&mp[i][j]); } } SPFA(1); int d1 = dis[n]; int d2 = dis[1]; SPFA(n); int d3 = dis[n]; int ans = d1<(d2+d3)?d1:(d2+d3); printf("%d\n",ans); } return 0;}
0 0
- 最短路_HDU_4370
- 最短路 & 次短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- NYOJ 975 关于521
- URAL 1907. Coffee and Buns(数论推导+容斥原理)
- 在u-boot里操作led灯
- Linux内核态抢占机制分析
- 网络图片浏览器异常问题
- 最短路_HDU_4370
- 解决办法:mysql_connect()不支持请检查mysql模块是否正确加载
- 常用Linux知识
- uinavigationController和uiSrcoll以及uiPageControl的结合使用---小相册
- 基于EasyDarwin实现幼儿园监控类项目
- 天真无谐
- Unity3D中隐藏与显示物体
- 2015.8.5 第十堂 内存管理(上)
- 双硬盘双系统,光驱位硬盘升级win10注意事项