P1576最小花费
  • 板块学术版
  • 楼主13882259842lyc
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/20 15:08
  • 上次更新2023/11/3 08:39:11
查看原帖
P1576最小花费
839426
13882259842lyc楼主2023/7/20 15:08
#include<bits/stdc++.h>
using namespace std;
int a,b,n,m,s,head[2010],nxt[2010],idx,to[2010];
double dis[2010],w[2010];
bool vis[2010];
struct node{
	double ds;
	int pt;
	friend bool operator < (const node &x,const node &y){
		return x.ds<y.ds;
	}
};
priority_queue<node> q;
void add(int u,int v,int k){
	idx++;
	w[idx]=1-1.0*k/100.0;
	to[idx]=v;
	nxt[idx]=head[u];
	head[u]=idx;
}
void dij(int x){
	dis[x]=1;
	q.push({dis[x],x});
	while(!q.empty()){
		node nod=q.top();
		q.pop();
		int y=nod.pt;
		if(vis[y]) continue;
		vis[y]=true;
		for(int i=head[y];i;i=nxt[i]){
			if(dis[to[i]]<dis[y]*w[i]){
				dis[to[i]]=dis[y]*w[i];
				q.push({dis[to[i]],to[i]});
			}
		}
	}
}
int main(){
	cin>>n>>m;
	int x,y,z;
//	double z;
	for(int i=1;i<=m;i++){
//		cin>>x>>y>>z;
		scanf("%d%d%d",&x,&y,&z);
		add(x,y,z);
		add(y,x,z);
	}
//	for(int i=1;i<=2010;i++) dis[i]=0x3f3f3f3f;
	cin>>a>>b;
	dij(a);
	double ans=100.0/dis[b];
	//cout<<fixed<<setprecision<<(8)<<ans;
	printf("%.8lf",ans);
	return 0;
}

为什么全部TLE了??!!

2023/7/20 15:08
加载中...