Pagini recente » Cod sursa (job #3241786) | Cod sursa (job #2171080) | Cod sursa (job #598292) | Cod sursa (job #1000213) | Cod sursa (job #1161707)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
const int MAX = 50505;
int N, M;
int Grad[MAX];
vector<int> G[MAX];
queue<int> Q;
void citire() {
ifstream in("sortaret.in");
in >> N >> M;
for(int i = 1, A, B; i <= M; i++) {
in >> A >> B;
G[A].push_back(B);
Grad[B]++;
} in.close();
}
void solve() {
ofstream out("sortaret.out");
for(int i = 1; i <= N; i++) {
if(!Grad[i])
Q.push(i);
}
while(!Q.empty()) {
int nod = Q.front(); Q.pop();
out << nod << " ";
for(size_t i = 0; i < G[nod].size(); i++) {
int vecin = G[nod][i];
if(--Grad[vecin] == 0)
Q.push(vecin);
}
} out.close();
}
int main() {
citire();
solve();
}