比赛 |
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;
}