求救求救
查看原帖
求救求救
309392
Almond7216楼主2021/5/9 13:59

样例已过,请问哪里出了问题

#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;
}
2021/5/9 13:59
加载中...