Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("dmin2.in");
- ofstream fout("dmin2.out");
- int n, k, m, a[101][101], viz[101], dist[101], D[101][101];
- void bf(int vp)
- {
- int c[100], st, dr;
- st=dr=1;
- c[1]=vp;
- viz[vp]=1;
- dist[vp]=0;
- while(st<=dr)
- {
- for(int i=1; i<=n; i++)
- if(a[c[st]][i]==1 && !viz[i])
- {
- dr++;
- c[dr]=i;
- viz[i]=1;
- dist[c[dr]]=dist[c[st]]+1;
- }
- st++;
- }
- for(int i=1; i<=dr; i++)
- D[vp][c[i]]=dist[c[i]];
- }
- int main()
- {
- int x, y;
- fin>>n>>m;
- for(int i=1; i<=m; ++i)
- {
- fin>>x>>y;
- a[x][y]=1;
- }
- for(int i=1; i<=n; i++)
- for(int j=1; j<=n; j++)
- if(i!=j)
- D[i][j]=-1;
- for(int i=1; i<=n; i++)
- {
- bf(i);
- for(int j=1; j<=n; j++)
- viz[j]=0;
- }
- fin>>k;
- for(int i=1; i<=k; ++i)
- {
- fin>>x>>y;
- fout<<D[x][y]<<'\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement