Cod sursa(job #963099)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 16 iunie 2013 16:04:55
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <deque>
#include <list>

using namespace std;

int n,m;

struct nod
{
   int grad_interior; 
   list<int> iese;
   
   nod()
   {
      grad_interior=0;   
   }       
}v[50005];

deque <int> coada;

int main()
{
    ifstream cin("sortaret.in");
    ofstream cout("sortaret.out");
    
    int i,a,b;
    cin>>n>>m;
    for(i=1;i<=m;i++)
    {
       cin>>a>>b;
       v[b].grad_interior++;
       v[a].iese.push_back(b);                
    }
    for(i=1;i<=n;i++)
       if(v[i].grad_interior==0)
          coada.push_back(i);               

    deque<int>::iterator it;
    list<int>::iterator p;      
    for(it=coada.begin();it!=coada.end();it++)
    {
       cout<<(*it)<<' ';                                       
       for(p=v[(*it)].iese.begin();p!=v[(*it)].iese.end();p++)
       {
          //cout<<"se scote pt. "<<*it<<' '<<*p<<endl;                                                    
          v[(*p)].grad_interior--;
          if(v[(*p)].grad_interior==0)
            coada.push_back(*p);                                      
       }
    }
    cout<<'\n';
    cin.close();
    cout.close();
   system("PAUSE");
    return 0;
}