Pagini recente » Cod sursa (job #2284964) | Cod sursa (job #106549) | Cod sursa (job #1969912) | Cod sursa (job #2034644) | Cod sursa (job #476479)
Cod sursa(job #476479)
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <deque>
#include <string>
#include <map>
#include <set>
#include <algorithm>
#include <numeric>
#include <cmath>
using namespace std;
class sortaret {
private:
typedef vector<int> VI;
typedef vector<int>::iterator VIIt;
public:
static void func_sortaret(ifstream &in, ofstream &out) {
int n;
int m;
in >> n >> m;
vector<VI> graf(n, VI());
VI ed(n, 0);
for (int i = 0; i < m; ++i) {
int x, y;
in >> x >> y;
graf[x - 1].push_back(y - 1);
++ed[y - 1];
}
deque<int> q;
for (size_t i = 0; i < ed.size(); ++i) {
if (ed[i] == 0) {
q.push_back(i);
}
}
while (!q.empty()) {
int u = q.front();
q.pop_front();
out << u + 1 << " ";
for (size_t i = 0; i < graf[u].size(); ++i) {
--ed[graf[u][i]];
if (ed[graf[u][i]] == 0) {
q.push_back(graf[u][i]);
}
}
}
}
};
int main() {
ifstream in("sortaret.in");
ofstream out("sortaret.out");
sortaret::func_sortaret(in, out);
}