poj 1502 MPI dijkstra

来源:互联网 发布:怎么查看端口是否关闭 编辑:程序博客网 时间:2024/06/04 19:42
#include <iostream>#include <vector>#include <queue>#define NUM 105#define INF 0x3fffffffusing namespace std;struct Edge{int to;int cost;}edge;vector<Edge> edges[NUM];int visited[NUM];int dist[NUM];void init(){for(int i=0;i<NUM;i++){visited[i]=0;dist[i]=INF;}}char Data[20];int main(){int N;scanf("%d",&N);for(int i=1;i<=N;i++){for(int j=1;j<i;j++){scanf("%s",Data);if(Data[0]!='x'){int d=atoi(Data);edge.to=j;edge.cost=d;edges[i].push_back(edge);edge.to=i;edge.cost=d;edges[j].push_back(edge);}}}init();int from=1;dist[from]=0;for(int t=0;t<N-1;t++){visited[from]=1;for(int index=0;index<edges[from].size();index++){int to=edges[from][index].to;int cost=edges[from][index].cost;if(visited[to]==0&&dist[to]>dist[from]+cost){//cout<<from<<" update "<<to<<endl;dist[to]=dist[from]+cost;}}int min=INF;for(int k=1;k<=N;k++){if(visited[k]==0&&dist[k]<min){min=dist[k];from=k;}}}int max=0;for(int k=2;k<=N;k++){if(dist[k]>max){max=dist[k];}}cout<<max<<endl;return 0;}

原创粉丝点击