样例已过
#include<bits/stdc++.h>
using namespace std;
const int M=500005;
bool vis[M];
int n,m,x,y,tot;
double head[M],ver[M],nextn[M],w[M],d[M];
void build(int a,int b,double c)
{
nextn[++tot]=head[a];
head[a]=tot;
ver[tot]=b;
w[tot]=c;
}
void dij()
{
memset(d,0,sizeof(d));
priority_queue<pair<int,int>>q;
d[x]=1.0;
q.push(make_pair(-1,x));
while(!q.empty())
{
int a=q.top().second;
q.pop();
if(vis[a]) continue;
vis[a]=1;
for(int i=head[a];i;i=nextn[i])
{
int b=ver[i];
if(d[b]<d[a]*w[i])
d[b]=d[a]*w[i];
q.push(make_pair(-d[b],b));
}
}
}
double ans=100.0;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
c=1-(c/100);
cout<<c<<endl;
build(a,b,c);
}
scanf("%d%d",&x,&y);
dij();
for(int i=1;i<=n;i++)
printf("%lf\n",d[i]);
printf("%.8lf\n",ans/d[y]);
return 0;
}