| 比赛 | 
    20101110 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    奶牛派对 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    郭乾乐 | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2010-11-10 19:48:10 | 
显示代码纯文本
#include<iostream>
#include<fstream>
using namespace std;
int a[1001][1001][2],n,m,e,maxn=99999999,b[1001][2];
void djs(int sn,int x)
{
	int i,j,wm,k,d[1001];
	bool t[1001];
	for(i=1;i<=n;i++)
	{
		d[i]=maxn;
		t[i]=true;
	}
	d[sn]=0;
	for(i=1;i<n;i++)
	{
		wm=maxn;
		for(j=1;j<=n;j++)
			if(t[j]&&d[j]<wm)
			{
				k=j;
				wm=d[j];
			}
		t[k]=false;
		for(j=1;j<=n;j++)
			if(t[j]&&(a[k][j][x]+d[k])<d[j])
				d[j]=a[k][j][x]+d[k];
	}
	for(i=1;i<=n;i++)
		b[i][x]=d[i];
}
int main()
{
	ifstream fin("party.in");
	ofstream fout("party.out");
	int i,x,y,j,mm=0;
	fin>>n>>m>>e;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
		{
			a[i][j][0]=maxn;
			a[i][j][1]=maxn;
		}
	for(i=1;i<=m;i++)
	{
		fin>>x>>y;
		fin>>a[x][y][0];
		a[y][x][1]=a[x][y][0];
	}
	djs(e,0);
	djs(e,1);
	for(i=1;i<=n;i++)
		if((b[i][0]+b[i][1])>mm)
			mm=b[i][0]+b[i][1];
	fout<<mm<<endl;
	return 0;
}