HDU 5137 How Many Maos Does the Guanxi Worth(枚举+最短路径)
来源:互联网 发布:人脸识别算法 源代码 编辑:程序博客网 时间:2024/06/04 20:10
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=5137
题意:
给出一个无向图n个点m条边,断开其中的除了1和n之外的其中一个点的所有边,让最短路最长。
思路:
依次枚举除了1和n之外的其中一个点的所有边的最短路的结果,并且求出最大值。
AC代码:
#include<iostream>#include<cstring>#include<algorithm>using namespace std;#define INF 0x3f3f3f3fconst int maxn = 35;int mp[maxn][maxn],vis[maxn],lowcost[maxn],tmp[maxn];int n,m;int dijstra(){ memset(vis,0,sizeof(vis)); vis[1]=1; for(int i=1; i<=n; i++) lowcost[i]=mp[1][i]; lowcost[1]=0;///注意赋值为0 否则会出错 for(int i=1; i<n; i++){ int mi=INF,flag; for(int j=1; j<=n; j++){ if(!vis[j]&&lowcost[j]<mi){ mi=lowcost[j]; flag=j; } } vis[flag]=1; for(int j=1; j<=n; j++){///更新 if(!vis[j]&&lowcost[j]>lowcost[flag]+mp[flag][j]) lowcost[j]=lowcost[flag]+mp[j][flag]; } ///if(flag==n) break; } return lowcost[n];}int main(){ while(cin>>n>>m){ if(n==0&&m==0) break; for(int i=1; i<=n; i++)///初始化 for(int j=1; j<=n; j++) mp[i][j]=INF; int a,b,c; for(int i=0; i<m; i++){ cin>>a>>b>>c; mp[a][b]=mp[b][a]=c; } int ans=0; for(int i=2; i<n; i++){ for(int j=1; j<=n; j++){///依次切断i点与所有点的联系,并暂时保存这些值,以便随后恢复 tmp[j]=mp[i][j]; mp[i][j]=mp[j][i]=INF; } ans=max(ans,dijstra()); for(int j=1; j<=n; j++)///恢复i与所有点的初始值 mp[i][j]=mp[j][i]=tmp[j]; } if(ans==INF) cout<<"Inf"<<endl; else cout<<ans<<endl; }}
奇怪的是跑第二组测试数据有时候会崩溃,但是居然AC,应该数据比较水,找了几天的bug没找出来,麻烦大家看看,如果发现什么问题可以直接指出来,谢谢!
阅读全文
0 0
- HDU 5137 How Many Maos Does the Guanxi Worth(枚举+最短路径)
- hdu 5137 How Many Maos Does the Guanxi Worth(最短路径)
- HDU 5137 How Many Maos Does the Guanxi Worth(最短路径)
- HDU 5137 How Many Maos Does the Guanxi Worth (最短路径最大值)
- HDU 5137--How Many Maos Does the Guanxi Worth【枚举 && 最短路 && spfa】
- 杭电-5137How Many Maos Does the Guanxi Worth(删点枚举+最短路)
- HDU 5137 How Many Maos Does the Guanxi Worth(floyd记录路径)
- HDU:5137 How Many Maos Does the Guanxi Worth(dijkstra算法求最短路径+小技巧)
- hdu 5137 How Many Maos Does the Guanxi Worth (最短路SPAF实现)
- HDU 5137 How Many Maos Does the Guanxi Worth(最短路--dijkstra)
- HDU 5137 How Many Maos Does the Guanxi Worth (最短路)
- HDU 5137 How Many Maos Does the Guanxi Worth(最短路)
- Hdu oj 5137 How Many Maos Does the Guanxi Worth
- HDU 5137:How Many Maos Does the Guanxi Worth【Floyd】
- HDU - 5137 How Many Maos Does the Guanxi Worth
- HDU 5137 How Many Maos Does the Guanxi Worth
- HDU 5137 How Many Maos Does the Guanxi Worth
- HDU-5137 H - How Many Maos Does the Guanxi Worth
- 排序(1)插入排序及交换排序
- 爬虫实战之一--python3及pip安装
- POj 2253 Frogger(变相最短路)
- oraclecode常用语句大全
- 关于zookeeper集群的配置问题
- HDU 5137 How Many Maos Does the Guanxi Worth(枚举+最短路径)
- HDU-1950 Bridging signals (nlogn求LIS)
- 告别Dagger2模板代码:DaggerAndroid原理解析
- 验证RA8875的硬件绘图与使用MCU软件绘图的速度差异
- starUML初识
- Ubuntu 16.04开启SSH服务
- loj #2034. 「SDOI2016」排列计数(错排)
- IntelliJ IDEA配置多个JDK
- 数据库驱动类名