天天看點

poj 1502 MPI Maelstrom dijkstra基礎 入門 點型模闆題

#include<iostream>
using namespace std;
int map[105][105];
int vis[105],d[105];
int main()
{
	int n,a;
	char r[100];
	while(cin>>n)
	{
		for(int i=0;i<105;i++)
		{
			for(int j=0;j<105;j++)
			{
				map[i][j]=0xFFFF;
				if(i==j)
				map[i][j]=0;
			}
		}
		memset(vis,0,sizeof(vis));
		for(int i=2;i<=n;i++)
		{
			for(int j=1;j<i;j++)
			{
				cin>>r;
				if(r[0]!='x')
				{
					map[i][j]=map[j][i]=atoi(r);
				}
				else
				map[i][j]=0xFFFF;
			}
		}
		vis[1]=1;
		for(int i=1;i<=n;i++)
		d[i]=map[1][i];
		int max=0xFFFF;
		for(int i=1;i<n;i++)
		{
			int temp=max,u;
			for(int j=1;j<=n;j++)
			{
				if(!vis[j]&&d[j]<temp)
				{
					u=j;
					temp=d[j];
				}
			}
			vis[u]=1;
			for(int j=1;j<=n;j++)
			if(!vis[j])
			{
				if(d[j]>d[u]+map[u][j])
				d[j]=map[u][j]+d[u];
			}
		}
		max=0;
//		for(int i=1;i<=n;i++)
//		cout<<d[i]<<' ';
//		system("pause");
		for(int i=1;i<=n;i++)
		if(d[i]>max)
		max=d[i];
		cout<<max<<endl;
	}
	return 0;
}
		
			
		
				
		
	
           

繼續閱讀