Cod sursa(job #758049)

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

using namespace std;

struct nod
{
       int info;
       nod *urm;
       }*p, *prim;


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


void baga(int a)
{
     p = new nod;
     p -> info = a;
     p -> urm = prim;
     prim = p;
}

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);

      baga(nod);
}
         
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 (p = prim; p; p = p -> urm)
        printf("%d", p -> info);
    
return 0;
}