单源最短路求助!
  • 板块灌水区
  • 楼主f_hxr_
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/4/14 19:07
  • 上次更新2023/10/23 18:30:58
查看原帖
单源最短路求助!
754467
f_hxr_楼主2023/4/14 19:07

rt,一直WA TLE,有无大佬看看哪里错了QAQ

#include<bits/stdc++.h>
using namespace std;
int m,n,s,a,b,c,x;
int dis[1000001],vis[1000001];
int head[1000001],nxt[1000001],to[1000001],w[1000001],cnt;
void edge(int u,int v,int mon){
	nxt[++cnt]=head[u];head[u]=cnt;
	to[cnt]=v;w[cnt]=mon;
} 
int main(){
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++)dis[i]=1e9;
	for(int i=1;i<=m;i++)cin>>a>>b>>c,edge(a,b,c);
	dis[s]=0;x=s;
	while(!vis[x]){
		if(vis[x])continue;vis[x]=1;
		for(int i=head[x];i;i=nxt[i])
			dis[to[i]]=min(dis[to[i]],dis[x]+w[i]);
		int mn=1e9;
		for(int i=1;i<=m;i++)
			if(dis[to[i]]<mn&&!vis[i])mn=dis[i],x=i; 
	}
	for(int i=1;i<=n;i++) cout<<dis[i]<<" ";
	return 0;
}
                                         
2023/4/14 19:07
加载中...