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