poj 1797 最短路变形dijkstra
2015-06-19 09:58
411 查看
题意:题目大意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量
链接:点我
解题思路:其实这个求最大边可以近似于求最短路,只要修改下找最短路更新的条件就可以了
链接:点我
解题思路:其实这个求最大边可以近似于求最短路,只要修改下找最短路更新的条件就可以了
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using namespace std; #define MOD 1000000007 #define pb(a) push_back(a) const int INF=0x3f3f3f3f; const double eps=1e-5; typedef long long ll; #define cl(a) memset(a,0,sizeof(a)) #define ts printf("*****\n"); const int MAXN=1010; int n,m,tt,cnt; int dist[MAXN][MAXN]; #define typec int bool vis[MAXN]; int pre[MAXN]; int cost[MAXN][MAXN],lowcost[MAXN]; void Dijkstra(int n,int beg) { for(int i=1;i<=n;i++) { lowcost[i]=0;vis[i]=false;pre[i]=-1; } lowcost[beg]=INF; for(int j=0;j<n;j++) { int k=-1; int Min=0; for(int i=1;i<=n;i++) if(!vis[i]&&lowcost[i]>Min) { Min=lowcost[i]; k=i; } if(k==-1)break; vis[k]=true; for(int i=1;i<=n;i++) if(!vis[i]&&min(lowcost[k],cost[k][i])>lowcost[i]) { lowcost[i]=min(lowcost[k],cost[k][i]); pre[i]=k; } } } int main() { int i,j,k; #ifndef ONLINE_JUDGE freopen("1.in","r",stdin); #endif int ca=1; int tt; scanf("%d",&tt); while(tt--) { scanf("%d%d",&n,&m); cl(cost); int u,v,w; cl(cost); for(i=0;i<m;i++) { scanf("%d%d%d",&u,&v,&w); cost[u][v]=cost[v][u]=max(cost[u][v],w); } /*for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf("%d ",cost[i][j]); } printf("\n"); }*/ Dijkstra(n,1); printf("Scenario #%d:\n%d\n\n",ca++,lowcost ); } return 0; }
相关文章推荐
- Oracle中使用profile管理用户口令
- 关于windows下django使用celery实现异步调用(RabbitMQ)
- 高效程序员的45个习惯
- 使用py2exe将python 脚本生成exe可执行文件
- github协作提示sync fail的解决方法
- Java可变参数方法重载时要注意的几个问题
- java设计模式的学习资料
- Spring -- Model 和 ModelAndView
- Spring -- Model 和 ModelAndView
- Spring -- Model 和 ModelAndView
- Grub及内核的简单介绍安装
- java 内部类总结
- Allegro:Arc segment is outside of the extents.
- 一些常用软件的网络端口协议分类介绍
- FFplay 播放器
- JavaScript中模拟实现jsonp
- UITextView 单行垂直居中显示
- python网络爬虫
- 关于单例设计模式
- AVPlayer