比赛 20111110 评测结果 EMMMMMMMMM
题目名称 城市 最终得分 0
用户昵称 风华正茂 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-10 09:19:05
显示代码纯文本
#include<fstream>
using namespace std;
ifstream cin("cost.in");
ofstream cout("cost.out");
int n,m,u,v,s,price[10001],road[10001][5001][2];
int max1=1000000001;
void bi(int begin,int end,int tot,int shang,int you)
{
	if(you>0)
	{
		if(begin==end)
		{
			if(max1>tot)
				max1=tot;
			if(price[end]>max1)
				max1=price[end];
		}
		else
		{
			int i;
			for(i=1;i<=road[begin][0][0];i++)
			{
				if(road[begin][i][0]!=shang)
				{
					if(price[road[begin][i][0]]>tot)
						tot=price[road[begin][i][1]];
					you=you-road[begin][i][1];
					bi(road[begin][i][0],end,tot,begin,you);
				}
			}
		}
	}
}
int main()
{
	int i,a1,b1,c1;
	cin>>n>>m>>u>>v>>s;
	for(i=1;i<=n;i++)
		cin>>price[i];
	for(i=0;i<m;i++)
	{
		cin>>a1>>b1>>c1;
		road[a1][0][0]++;
		road[a1][road[a1][0][0]][0]=b1;
		road[a1][road[a1][0][0]][1]=c1;
		road[b1][0][0]++;
		road[b1][road[b1][0][0]][0]=a1;
		road[b1][road[b1][0][0]][1]=c1;
	}
	bi(u,v,price[u],u,s);
	if(max1==1000000001)
		cout<<-1<<endl;
	else
		cout<<max1<<endl;
	return 0;
}