0pts
查看原帖
0pts
517637
瀛洲仙子楼主2024/7/14 22:25

求助

#include<bits/stdc++.h>
using namespace std;
int n,m,s;const int inf=2147483647;
vector<int>adj[10005],val[10005];
int dp[10005];bool inq[10005];
void SPFA()
{
    queue<int>q;q.push(s);
    inq[s]=true;dp[s]=0;
    while(q.size())
    {
        int fr=q.front();q.pop();
        inq[fr]=false;
        for(int j=0;j<adj[fr].size();++j)
        {
            if(dp[adj[fr][j]]>dp[fr]+val[fr][j])
            {
                dp[adj[fr][j]]=dp[fr]+val[fr][j];
                if(!inq[adj[fr][j]])
                {
                    inq[adj[fr][j]]=true;
                    q.push(adj[fr][j]);
                    
                }
            }
        }
    }
}
int main()
{
    fill(dp+1,dp+n+1,inf);
    cin>>n>>m>>s;while(m--)
    {
        int u,v,w;cin>>u>>v>>w;
        adj[u].push_back(v);
        val[u].push_back(w);
    }
    SPFA();
    for(int i=1;i<=n;++i)
        cout<<dp[i]<<' ';
    return 0;
}
2024/7/14 22:25
加载中...