TLE 70pts dijkstra(非堆优化)求调
查看原帖
TLE 70pts dijkstra(非堆优化)求调
1121518
StarsIntoSea楼主2023/12/2 08:05
#include<cstdio>
#include<cstring>
const int N=2147483647;
long long ans[100005];
bool fr[100005];
struct node{
	int u,v,w;
}a[500005];
int n,m,k;
signed main(){
	memset(fr,true,sizeof(fr));
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=n;++i) ans[i]=N; 
	int u1,v1,w1;
	for(int i=1;i<=m;++i){
		scanf("%d%d%d",&u1,&v1,&w1);
		a[i].u=u1; a[i].v=v1; a[i].w=w1;
	}
	ans[k]=0;
	while(1){
		int min=N,suh;
		for(int i=1;i<=n;++i)
			if(fr[i]&&min>ans[i]){
				min=ans[i];suh=i;
			}
		if(min==N) break;
		fr[suh]=false;
		for(int i=1;i<=m;++i){
			if(a[i].u==suh&&ans[suh]+a[i].w<ans[a[i].v])
				ans[a[i].v]=ans[suh]+a[i].w;
		}
	}
	for(int i=1;i<=n;++i) printf("%lld ",ans[i]);
}
2023/12/2 08:05
加载中...