求助!全WA
查看原帖
求助!全WA
393737
YYHISBOY楼主2022/10/5 15:51
样例已过
#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("%lf\n",d[y]);
  printf("%.8lf\n",ans/d[y]);
  return 0;
}

2022/10/5 15:51
加载中...