Pagini recente » Cod sursa (job #2304779) | Cod sursa (job #1404869) | Cod sursa (job #1355569) | Cod sursa (job #766994) | Cod sursa (job #2316645)
#include <fstream>
#include <list>
#include <vector>
#include <deque>
#include <bitset>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int VMAX = 50000;
list <int> adjList[1 + VMAX];
vector <int> outDeg;
bitset <1 + VMAX> seen;
int V, E;
void readData() {
fin >> V >> E;
outDeg.resize(1 + V);
for (; E; --E) {
int from, to;
fin >> from >> to;
adjList[from].push_back(to);
++outDeg[to];
}
}
void topoSort() {
deque <int> Queue;
for (int node = 1; node <= V; ++node)
if (outDeg[node] == 0) {
seen[node] = true;
Queue.push_back(node);
}
while (!Queue.empty()) {
int node = Queue.front();
Queue.pop_front();
fout << node << ' ';
for (const int &nextNode : adjList[node]) {
Queue.push_back(nextNode);
seen[nextNode] = true;
}
}
}
int main() {
readData();
topoSort();
}