POJ2485 最短路的水题

来源:互联网 发布:linux vim 保存 编辑:程序博客网 时间:2024/04/20 00:26

求的是最短路中的最大边,很水啦。。

这里用的prim算法 关于prim详情见我的上一篇博客点击打开链接

#include<iostream>#include<algorithm>#include<cstdio>#define INF 1e9#define INI -1e9using namespace std;int closest[505],lowcost[505],m;int G[506][506];void read(){cin>>m;for(int i=0;i<m;i++)for (int j=0;j<m;j++)scanf("%d",&G[i][j]);}void deal()//prim 算法{for(int i=0;i<m;i++) { lowcost[i]=INF;}for(int i=0;i<m;i++) { closest[i]=0;}closest[0]=-1;int num=0,ans=INI,e=0;while(++num<m){int micost=INF,miedge=-1;for(int i=0;i<m;i++)if(closest[i]!=-1){int temp=G[i][e];if(temp<lowcost[i]){lowcost[i]=temp;closest[i]=e;}if(lowcost[i]<micost)micost=lowcost[miedge=i];}ans=max(ans,micost);//其实和最短路一样一样的就是这句话变了 不再是累加了而是取最大值closest[e=miedge]=-1;}printf("%d\n",ans);}int main(){int T;cin>>T;while(T--){read();deal();}return 0;}

原创粉丝点击