Cod sursa(job #355950)

Utilizator csizMocanu Calin csiz Data 12 octombrie 2009 20:04:48
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <vector>
#include <queue>
#include <stack>
#include <iostream>

using namespace std;

int main(){
    ifstream in("dfs.in");
    ofstream out("dfs.out");

    int m,n,;
    in>>n>>m;

    vector<pair<vector<int>,bool> > v;v.reserve(n);
    for(int i=0;i<n;i++){
        v.push_back(pair<vector<int>,bool>(vector<int>(),true));
    }
    for(int i=0;i<m;i++){
        int x,y;
        in>>x>>y;
        v[x-1].first.push_back(y-1);
    }

    int max=1;
    queue<int> s;
    for(int i=0;i<n;i++){
        if(v[i].second){
            s.push(i);
            v[i].second=false;
            int comp=0;
            while(!s.empty()){
                for(int i=0;i<v[s.front()].first.size();i++){
                    if(v[v[s.front()].first[i]].second){
                        s.push(v[s.front()].first[i]);
                        v[v[s.front()].first[i]].second=false;
                    }
                }
                comp++;
                s.pop();
            }
            if(comp>max) max=comp;
        }
    }
    out<<max;
}