1 条题解

  • 0
    @ 2026-3-15 10:08:33
    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e4+10;
    int d[N],n,m,st,ed;
    vector<pair<int,int> >G[N];
    bool v[N];
    void dij()
    {
        queue<int>Q;
        memset(d,0x3f,sizeof(d));
        memset(v,0,sizeof(v));
        Q.push(st);d[st]=0;v[st]=1;
        while(!Q.empty())
        {
            int x=Q.front();Q.pop();v[x]=0;
            for(auto i:G[x])
            {
                int y=i.first,c=i.second;
                if(d[y]>d[x]+c)
                {
                    d[y]=d[x]+c;
                    if(!v[y])Q.push(y),v[y]=1;
                }
            }
        }
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1,x,y;i<=m;i++)
        {
            scanf("%d%d",&x,&y);
            G[x].push_back({y,1});
            G[y].push_back({x,1});
        }
        st=1;
        dij();
        int ans=0,p=0,sum=0;
        for(int i=1;i<=n;i++)
        {
            if(d[i]>ans){sum=1;ans=d[i];p=i;}
            else if(d[i]==ans){sum++;}
        }
        printf("%d %d %d\n",p,ans,sum);
        return 0;
    }
    
    • 1

    *【最短路:dijkstra算法】单源最短路[USACO09OPEN] Hide and Seek S

    信息

    ID
    1571
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    163
    已通过
    34
    上传者