Cod sursa(job #1834501)

Utilizator flibiaVisanu Cristian flibia Data 24 decembrie 2016 18:08:17
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

int n, m, p, i, j, x, y, nr, sol1[2000005];
bool viz[2000005], b[2000005], c;
vector <int> v[2000005];

void dfs(int k, bool *cr){
    viz[k] = 1;
    for(j = 0; j < v[k].size(); j++){
        if(!viz[v[k][j]]){
            if(b[v[k][j]]){
                *cr = 1;
                break;
            }
            else dfs(v[k][j], cr);
        }
    }
}

int main(){
    ifstream cin("berarii2.in");
    ofstream cout("berarii2.out");
	cin >> n >> m >> p;
    for(i = 1; i <= m; i++){
        cin >> x >> y;
        v[x].push_back(y);
    }
    for(i = 1; i <= p; i++){
        cin >> x;
        b[x] = 1;
    }
    for(i = 1; i <= n; i++){
        memset(viz, 0, sizeof(viz));
        c = 0;
		dfs(i, &c);
        if(!c) sol1[++nr] = i;
    }
    cout << nr << '\n';
    for(i = 1; i <= nr; i++) cout << sol1[i] << '\n';
    return 0;
}