Mai intai trebuie sa te autentifici.
Cod sursa(job #645129)
| Utilizator | Data | 8 decembrie 2011 17:04:46 | |
|---|---|---|---|
| Problema | Sortare topologica | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.86 kb |
#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
#define N 50005
using namespace std;
vector <int> g[N];
int n,m,viz[N];
stack <int> s;
void read()
{
int x,y;
scanf("%d %d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
g[x].push_back(y);
}
}
void adanc(int p)
{
viz[p]=1;
for (int i=0;i<g[p].size();i++)
{
if (viz[g[p][i]]==0)
adanc(g[p][i]);
}
s.push(p);
}
void afis()
{
while (!s.empty())
{
int k=s.top();
printf("%d ",k);
s.pop();
}
}
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
read();
for (int i=1;i<=n;i++)
if (viz[i]==0){
adanc(i);
//afis();
}
afis();
return 0;
}
