Pagini recente » Cod sursa (job #2402200) | Cod sursa (job #1473102) | Cod sursa (job #1655651) | Cod sursa (job #907962) | Cod sursa (job #2529072)
///sortare topologica in ordine lexicografica
#include <fstream>
#define N 100002
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
vector <int>graph[N];
int grad[N];
priority_queue <int> q;
void sortaret()
{
int nod;
while(!q.empty())
{
nod=-q.top();
q.pop();
g<<nod<<' ';
for(int i=0;i<graph[nod].size();++i)
{
--grad[graph[nod][i]];
if(!grad[graph[nod][i]])///gradul tot scade si atunci o singura data va ajunge sa fie 0
q.push(-graph[nod][i]);
}
}
}
int main()
{
int n,m,x,y;
f>>n>>m;
for(int i=1;i<=m;++i)
{
f>>x>>y;
graph[x].push_back(y);
++grad[y];
}
for(int i=1;i<=n;++i)
if(!grad[i]) q.push(-i);
sortaret();
f.close();
g.close();
return 0;
}