poj 1502: MPI Maelstrom

解題思路:

(1)floyd算法求解單源最短路徑問題

(2)注意inf (1<<30) 相加時產生的int溢出的問題

#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;

const int inf = 1<<30;

int n;
int v[110][110];

void floyd()
{
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(v[i][k] < inf && v[k][j] < inf && v[i][j] > v[i][k] + v[k][j])
					v[i][j] = v[i][k] + v[k][j];
	int ans = 0;
	for(int i=1;i<=n;i++)
		ans = max(ans,v[1][i]);
	cout<<ans<<endl;
	return;
}

int main()
{
	cin>>n;
	memset(v,0,sizeof(v));
	char value[100];
	for(int i=2;i<=n;i++)
		for(int j=1;j<=i-1;j++)
		{
			cin>>value;
			if(value[0] == 'x')
				v[i][j] = inf;
			else
				v[i][j] = atoi(value);
			v[j][i] = v[i][j];
		}
	floyd();
	return 0;
}


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