Pagini recente » Cod sursa (job #1344883) | Cod sursa (job #1681052) | Cod sursa (job #1084876) | Cod sursa (job #1831489) | Cod sursa (job #749097)
Cod sursa(job #749097)
#include <fstream>
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int main()
{
ifstream f("sortaret.in");
ofstream g("sortaret.out");
vector<int> G[101],L;
set<int> S;
set<int>::iterator sit;
int N,M,a,b,i,x,grad[1000];
f>>N>>M;
for(i=1;i<=N;i++)
{
grad[i]=0;
S.insert(i);
}
for(i=1;i<=M;i++)
{
f>>a>>b;
G[a].push_back(b);
grad[b]++;
S.erase(b);
}
while(!S.empty())
{
sit=S.begin();
x=*sit;
S.erase(x);
L.push_back(x);
for(vector<int>::iterator it=G[x].begin();it!=G[x].end();it++)
{
if(grad[*it])
{
grad[*it]--;
if(grad[*it]==0) S.insert(*it);
}
//G[x].erase(it);
}
}
for(vector<int>::iterator it=L.begin();it!=L.end();it++)
{
g<<*it<<" ";
}
f.close();
g.close();
return 0;
}