您的位置:首页 > 其它

poj 1797 Heavy Transportation

2013-05-28 11:00 399 查看
#include <iostream>
#include <cstring>
#include <map>
#include <cstdio>

using namespace std;
#define maxn 1000+10

int nodes,edges;
int weight[maxn][maxn];
bool visited[maxn];
int dis[maxn];

int dij(int start){
for(int i=1;i<=nodes;i++)
dis[i] = weight[start][i];
dis[start] = 1<<20;
visited[start] = true;

for(int i=1;i<=nodes;i++){
int k_node,max = 0;
for(int j=1;j<=nodes;j++){
if(visited[j])
continue;
if(dis[j]>max){
max = dis[j];
k_node = j;
}
}
visited[k_node] = true;
if(visited[nodes])
return dis[nodes];
for(int i=1;i<=nodes;i++){
if(visited[i])
continue;
int temp = weight[k_node][i]>dis[k_node]?dis[k_node]:weight[k_node][i];
dis[i] = dis[i] > temp ? dis[i]:temp;
}
}

}

int main()
{
int cases;
cin>>cases;
for(int j=1;j<=cases;j++){
memset(weight,0,sizeof(weight));
memset(visited,false,sizeof(visited));
memset(dis,0,sizeof(dis));
cin>>nodes>>edges;
int start,end,temp_weight;
for(int i=0;i<edges;i++){
scanf("%d %d %d",&start,&end,&temp_weight);
weight[start][end] = temp_weight;
weight[end][start] = temp_weight;
}
cout<<"Scenario #"<<j<<":"<<endl;
cout<<dij(1)<<endl<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: