#include <iostream>
#include <cstring>
using namespace std;
int maxx=0,minn=9999999,cnt;
int n,m,c1,c2,man[501],a[501],b[501],c[501][501],r[501];
bool pan[501];
int dfs(int from,int to,int amount,int len)
{
if(from==to)
{
if(len<minn)
{
minn=len;
cnt=1;
maxx=amount;
}
else if(len==minn)
{
cnt++;
if(amount>maxx)
maxx=amount;
}
}
else
{
for(int i=0;i<n;i++)
{
if(c[from][i]&&(!pan[i]))
{
pan[i]=1;
dfs(i,to,amount+man[i],len+c[from][i]);
pan[i]=0;
}
}
}
}
int main()
{
cin>>n>>m>>c1>>c2;
for(int i=0;i<n;i++)
{
cin>>man[i];
}
for(int i=0;i<m;i++)
{
cin>>a[i]>>b[i]>>r[i];
c[a[i]][b[i]]=r[i];
c[b[i]][a[i]]=r[i];
}
pan[c1]=1;
dfs(c1,c2,man[c1],0);
cout<<cnt<<" "<<maxx;
return 0;
}
(乙)1003 我要通过!
最新推荐文章于 2021-03-04 00:36:11 发布