1 条题解

  • 1
    #include<bits/stdc++.h>
    using  namespace std;
    typedef long long ll;
    const ll N=1005;
    int n,i,j=0,m,x=0,y,q,t=0,a[N][N];
    int main()
    {
        cin>>n>>m;
        memset(a,999999,sizeof(a));
        for(i=1;i<=n;i++)
            a[i][i]=0;
        for(i=1;i<=m;i++)
        {
            cin>>x>>y;
            a[x][y]=1;
            a[y][x]=1; 
        }
        for(int k=1;k<=n;k++)
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++)
                    if(a[i][j]>a[i][k]+a[k][j])
                        a[i][j]=a[i][k]+a[k][j];
        cin>>q;
        for(i=1;i<=q;i++)
        {
            cin>>x>>y;
            for(j=1;j<=n;j++)
                if(a[x][j]+a[j][y]==a[x][y])
                    t++;
            cout<<t<<endl;
            t=0;
        }
        return 0;
    }
    
    
  • 1

信息

ID
1143
难度
10
分类
图结构 | 最短路 点击显示
标签
递交数
7
已通过
0
通过率
0%
上传者