0
姜锦明
修练者
修练者
题目链接: 酷町堂:7223
#include<bits/stdc++.h>
using namespace std;
int n,m,c,d,a[401],b[401];
double vis[21],f;
vector<int>v[21];
vector<double>v2[21];
void dfs(int x,double g){
vis[x]=max(vis[x],g);
if(x==d){
return;
}
for(int i=0;i<v[x].size();i++){
if(vis[v[x][i]]<g*v2[x][i]+0.00001){
dfs(v[x][i],g*v2[x][i]);
}
}
}
int main(){
cin>>n>>m>>c>>d;
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i];
v[a[i]].push_back(b[i]);
v[b[i]].push_back(a[i]);
}
vis[c]=1;
for(int i=1;i<=m;i++){
cin>>f;
v2[a[i]].push_back(f);
v2[b[i]].push_back(f);
}
dfs(c,1);
cout<<vis[d];
return 0;
}