各位大佬,用狄做的,为什么wa几个点啊
查看原帖
各位大佬,用狄做的,为什么wa几个点啊
427711
dream_Hao楼主2022/8/4 16:40
#include<bits/stdc++.h>
#include<queue>
using namespace std;

const int maxw=2e31-1;

int n,m,s;

struct code{
    int to,w;
};

queue<code> a[10001];
queue<int> p;


void work(int x,int dis[],bool b[])
{
    code k;
    bool t[n+1]={0};
    while(!a[x].empty()){
        k=a[x].front();a[x].pop();
        if(b[k.to]) continue;
        if(!t[k.to]){
            p.push(k.to);t[k.to]=1;
        }
        dis[k.to]=min(dis[k.to],dis[x]+k.w);
    }
    b[x]=1;
    if(p.empty()) return;
    int v=p.front();p.pop();
    work(v,dis,b);
}

int main()
{
    cin>>n>>m>>s;
    int dis[n+1],i,r;
    bool b[n+1]={0};
    code k;

    for(i=1;i<=n;i++) dis[i]=maxw;
    dis[s]=0;

    for(i=0;i<m;i++){
        cin>>r>>k.to>>k.w;
        if(r==k.to) continue;
        a[r].push(k);
    }
    work(s,dis,b);
    for(i=1;i<=n;i++) cout<<dis[i]<<" ";
    cin>>n;
    return 0;
}
2022/8/4 16:40
加载中...