Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int A[101][101],n,m,S[101],P[101],c,k;
- void DF_succ(int v,int c)
- {
- S[v]=c;
- for(int i=1;i<=n;++i)
- if(!S[i]&&A[v][i])
- DF_succ(i,c);
- }
- void DF_pred(int v,int c)
- {
- P[v]=c;
- for(int i=1;i<=n;++i)
- if(!P[i]&&A[i][v])
- DF_pred(i,c);
- }
- int main()
- {
- cin>>n>>m;
- for(int i=1;i<=m;++i)
- {
- int x,y;
- cin>>x>>y;
- A[x][y]=1;
- }
- for(int i=1;i<=n;++i)
- if(!S[i])
- {
- ++c;
- DF_succ(i,c);
- DF_pred(i,c);
- for(int j=1;j<=n;++j)
- if(S[j]!=P[j])
- S[j]=P[j]=0;
- }
- for(int i=1;i<=n;++i)
- for(int j=1;j<=n;++j)
- if(A[i][j]==1)
- if(S[i]!=S[j])
- ++k;
- cout<<k<<'\n';
- for(int i=1;i<=n;i++)
- for(int j=1;j<=n;j++)
- if(A[i][j]==1)
- if(S[i]!=S[j])
- cout<<i<<' '<<j<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement