萌新求助,本地输出正确提交后RE
查看原帖
萌新求助,本地输出正确提交后RE
1407356
wo_yao_shua_ti楼主2024/8/10 12:25

dijkstra+链式前向星,提交后TLE三个点,剩下全RE

第一个点数据本地输出和标准输出是一样的

记录

#include <bits/stdc++.h>
using namespace std;
long long n,m,s,u,v,q,cnt;
long long header[100005];
struct edge{
	long long to;
	long long next;
	long long w;
}e[500005];
bool add_edge(long long o,long long p,long long y){
	e[cnt].to=p;
	e[cnt].next=header[o];
	e[cnt].w=y;
	header[o]=cnt;
	cnt++;
}
long long pd[100005];
long long dis[100005];
int main(){
	scanf("%lld%lld%lld",&n,&m,&s);
	for(int i = 1;i<=n;i++){
		header[i]=-1;
		dis[i]=2147483647;
	}
	for(int i = 1;i<=m;i++){
		scanf("%lld%lld%lld",&u,&v,&q);
		add_edge(u,v,q);
		//add_edge(v,u,q);
	}
	long long res=s,minn,ind;
	dis[s]=0;
	while(pd[res]==0){
		pd[res]=1;
		ind=header[res];
		while(ind!=-1){
			if(pd[e[ind].to]==0){
				dis[e[ind].to]=min(dis[e[ind].to],dis[res]+e[ind].w);
			}
			ind=e[ind].next;
		}
		minn=2147483647;
		for(int j = 1;j<=n;j++){
			if(dis[j]<minn&&pd[j]==0){
				res=j;
				minn=dis[j];
			}
		}
	}
	for(int i = 1;i<=n;i++){
		printf("%lld ",dis[i]); 
	}
	return 0;
}

求调

2024/8/10 12:25
加载中...