【模板】单源最短路径(弱化版)

各位大佬写spfa蒟蒻的我只会用Dijkstra瞎搞.....然后AC了....虽然一开始本蒟蒻用前向星或邻接表RE了一天...,我们发现其实就是从这个点去搜它到每个点的距离....

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,h;
int main()
{
    cin>>n>>m>>h;
    int a1[m+1],a2[m+1],a3[m+1];//省空间
    int ans[m+2];//同上
    for(int i=1;i<=m;i++)
    {
        cin>>a1[i]>>a2[i]>>a3[i];//读入
    }
    for(int i=1;i<=n;i++)
    {
        ans[i]=9999999;//赋初值 
    }
    ans[h]=0;
    for(int i=1;i<=n-1;i++)
    {
        int maxn=1;
        for(int j=1;j<=m;j++)
        {
            if(ans[a2[j]]>ans[a1[j]]+a3[j])//每个点去找 
            {
                ans[a2[j]]=ans[a1[j]]+a3[j];
                maxn=0;
            }
        }
        if(maxn) break;
    }
    for(int i=1;i<=n;i++)
    {
        if(ans[i]!=9999999) cout<<ans[i]<<" ";//输出 
        else cout<<"2147483647 ";
    }
}

完事....

posted @ 2018-08-02 14:54  DJY_01  阅读(286)  评论(2编辑  收藏  举报