悬关,本地过,交上去全WA
查看原帖
悬关,本地过,交上去全WA
1380560
wxhwxh66楼主2024/10/14 19:54

代码如下
实在改不出来

#include<bits/stdc++.h>
using namespace std;

const int MAXN=1e4+10;
const int MAXM=5e5+10;
const long long inf=pow(2,31)-1;
int cnt,head[MAXN],dis[MAXN],vis[MAXN],to[MAXM],nxt[MAXM],len[MAXM];

inline int init(){
    cnt=1;
}
inline void add(int x,int y,int z){
    to[++cnt]=y,len[cnt]=z;
    nxt[cnt]=head[x];
    head[x]=cnt;
}
inline void spfa(int n,int s){
    queue<int> q;
    for(int i=1;i<=n;++i) dis[i]=inf,vis[i]=0;
    q.push(s); vis[s]=1,dis[s]=0;
    while(!q.empty()){
        int x=q.front(); q.pop();
        vis[x]=0;
        for(int i=head[x];i;i=nxt[i]){
            int y=to[i];
            if(dis[y]<=dis[x]+len[i]) continue;
            dis[y]=dis[x]+len[i];
            if(!vis[y]) q.push(y),vis[y]=1;
        }
    }
}

int main() {
	init();
	int n,m,S;
	cin>>n>>m>>S;
	for(int i=1; i<=m; i++) {
		int f,g,w;
		cin>>f>>g>>w;
		add(f,g,w);
	}
	spfa(n,S);
	for(int i=1; i<=n; i++)
		if(S==i) cout<<0<<" ";
		else cout<<dis[i]<<" ";
	return 0;
}
2024/10/14 19:54
加载中...