Cod sursa(job #758048)

Utilizator idomiralinIdomir Alin idomiralin Data 14 iunie 2012 11:41:51
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
# include <cstdio>
# include <vector>

using namespace std;

int n, m, i, a, b, ct, ct1, coada[50005], viz[50005];
vector <int> v[50005];

void dfs(int nod)
{
     vector<int> ::iterator it;
     viz[nod] = 1;

     coada[++ct1] = nod;
     
     for (it = v[nod].begin(); it != v[nod].end(); it++)
         if (!viz[*it]) viz[*it] = 1, dfs(*it);

}
         
int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);
    
    scanf("%d%d",&n,&m);
    for (i = 1; i <= m; i++)
    {
         scanf("%d %d",&a,&b);
         v[a].push_back(b);
         v[b].push_back(a);
         }
    
    for (i = 1; i <= n; i++)
        if (!viz[i]) ct++, dfs(i);
         
    printf("%d\n",ct);
    for (i = 1; i <= ct1; i++)
    printf("%d ",coada[i]);
    
return 0;
}