poj 1502 MPI dijkstra

#include <iostream>
#include <vector>
#include <queue>
#define NUM 105
#define INF 0x3fffffff

using 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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章