样例已过,请问哪里出了问题
#include<bits/stdc++.h>
using namespace std;
int vis[2001],vex[1000001],k,q[100011],n,m,A,B,head=1,tail;
double dis[3001];
struct edge{
int u,v,next;double w;
}e[200001];
void add(int u,int v,double w){
k++;
e[k].u=u;
e[k].v=v;
e[k].w=w;
e[k].next=vex[u];
vex[u]=k;
return;
}
void spfa(int a){
//for(int i=1;i<=n;i++) dis[i]=-1;
dis[A]=1;
vis[A]=1;
q[++tail]=A;
while(head<=tail){
int u=q[head];
head++;
vis[u]=0;
for(int i=vex[u];i;i=e[i].next){
int v=e[i].v;
if(dis[u]*e[i].w>dis[v]){
dis[v]=dis[u]*e[i].w;
if(!vis[v]) q[++tail]=v,vis[v]=1;
}
}
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
add(x,y,1-0.01*z);
}
cin>>A>>B;
spfa(A);
// for(int i=1;i<=n;i++){
// cout<<dis[i]<<endl;
// }
printf("%0.8f",100/dis[B]);
return 0;
}