poj1797--djikstra

来源:互联网 发布:sql server2000 win10 编辑:程序博客网 时间:2024/06/06 19:20
djikstra的稍微变形,找的是最大载重,转移方程稍微变形
/////dijkstra#include <iostream>#include<string>#include<stdio.h>using namespace std;int map[1005][1005];int temp[1005];//记录某点到1的最大载重bool flag[1005];int min(int a,int b){if (a>b)return b;else return a;}int main(){int N;cin>>N;int cnt=0;while(N--){cnt++;memset(flag,0,sizeof(flag));memset(map,0,sizeof(map));int n,m,i,j,k;scanf("%d%d",&n,&m);int a,b,c;while(m--){scanf("%d%d%d",&a,&b,&c);map[a][b]=c;map[b][a]=c;}int num=1;for (i=1;i<=n;i++){temp[i]=map[1][i];}for (i=0;i<n;i++){int M=0;for (j=1;j<=n;j++){if (flag[j]==0&&temp[j]>M)//找到源点距离最大的点{num=j;M=temp[j];}}for(j=1;j<=n;j++)//以找到的点为基准 更新与该点相连的未更新过的点的最大载重{if (flag[j]==0&&map[num][j]&&min(temp[num],map[num][j])>temp[j]){temp[j]=min(temp[num],map[num][j]);}}flag[num]=1;}cout<<"Scenario #"<<cnt<<":"<<endl;cout<<temp[n]<<"\n"<<endl;}return 0;}