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; }
相关文章推荐
- POJ-1797 Heavy Transportation
- poj 1797 最短路变形
- poj 1797 (最大生成树Kruscal)
- POJ 1797
- POJ-1797-Heavy Transportation
- POJ 1797 Heavy Transportation
- POJ - 1797 Heavy Transportation(最短路变形,SPFA,Dijkstra)
- poj 1797 Heavy Transportation(dijkstra)
- Heavy Transportation(POJ-1797)
- POJ 1797 Heavy Transportation (最短路)
- POJ 1797 Heavy Transportation
- poj 1797
- POJ 1797 (最短路变形)
- POJ 1797 【一种叫做最大生成树的很有趣的贪心】【也可以用dij的变形思想~】
- 【POJ】1797 Heavy Transportation 二分+最短路
- Heavy Transportation POJ - 1797
- POJ 1797 Heavy Transportation SPFA变形
- poj 1797 Heavy Transportation(最大生成树)
- POJ 1797 Heavy Transportation(最大生成树)
- poj 1797