2 条题解
-
2
12107张凌睿 (202112107张凌睿) LV 10 @ 2022-09-01 08:37:33
#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@ 2026-08-08 13:07:10
#include<bits/stdc++.h> using namespace std; #define int long long int n,m,p,g[105][105]; void floyd() { for (int k=1;k<=n;k++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) g[i][j]=min(g[i][j],g[i][k]+g[k][j]); } signed main() { cin>>n>>m; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { g[i][j]=INT_MAX; if (i==j) g[i][j]=0; } for (int i=1;i<=m;i++) { int u,v; cin>>u>>v; g[u][v]=1,g[v][u]=1; } floyd(); cin>>p; for (int i=1;i<=p;i++) { int a,b; cin>>a>>b; int sum=2; for (int i=1;i<=n;i++) if (i!=a&&i!=b&&g[a][b]==g[i][b]+g[a][i]) sum++; cout<<sum<<endl; } return 0; }
- 1