9564 2024. 02. 23 09:44:22 csaron71 Testnevelés óra cpp17 Elfogadva 50/50 228ms 27536 KiB
#include <bits/stdc++.h>
#include <queue>
using namespace std;

int main() {
	int n, k;
	cin >> n >> k;

	vector<int> elotte(n, 0);
	vector<vector<int> > utana(n, vector<int>());
	for (int i=0; i<k; i++) {
		int x, y;
		cin >> x >> y;
		x--;
		y--;
		elotte[y]++;
		utana[x].push_back(y);
	}

	queue<int> nullak;
	for (int i=0; i<n; i++) {
		if (elotte[i]==0) {
			nullak.push(i);
		}
	}

	vector<int> vege;
	bool tobb=false;
	int elso, masodik;
	while (nullak.size()>0) {
		int epp=nullak.front();
		nullak.pop();
		if (nullak.size()>0) {
			tobb=true;
			elso=epp;
			masodik=nullak.front();
		}
		vege.push_back(epp);
		for (int sz : utana[epp]) {
			elotte[sz]--;
			if (elotte[sz]==0) {
				nullak.push(sz);
			}
		}
	}

	if (vege.size()!=n) {
		cout << "0\n";
	}
	else if (tobb==false) {
		cout << "1\n";
		for (int sz : vege) {
			cout << sz+1 << " ";
		}
	}
	else {
		cout << "2\n";
		for (int sz : vege) {
			cout << sz+1 << " ";
		}
		cout << "\n";
		for (int i=0; i<n; i++) {
			if (vege[i]==elso) {
				cout << masodik+1 << " " << elso+1 << " ";
				i++;
			}
			else {
				cout << vege[i]+1 << " ";
			}
		}
	}
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 3ms 2024 KiB
3 Elfogadva 0/0 184ms 16356 KiB
4 Elfogadva 2/2 3ms 4740 KiB
5 Elfogadva 3/3 3ms 4828 KiB
6 Elfogadva 3/3 3ms 4860 KiB
7 Elfogadva 3/3 3ms 4960 KiB
8 Elfogadva 1/1 3ms 4936 KiB
9 Elfogadva 3/3 3ms 4948 KiB
10 Elfogadva 3/3 4ms 5424 KiB
11 Elfogadva 3/3 4ms 5504 KiB
12 Elfogadva 1/1 4ms 5632 KiB
13 Elfogadva 2/2 4ms 5760 KiB
14 Elfogadva 3/3 3ms 5672 KiB
15 Elfogadva 1/1 155ms 13680 KiB
16 Elfogadva 3/3 138ms 22072 KiB
17 Elfogadva 5/5 61ms 20712 KiB
18 Elfogadva 1/1 228ms 27536 KiB
19 Elfogadva 2/2 151ms 13980 KiB
20 Elfogadva 3/3 179ms 25784 KiB
21 Elfogadva 4/4 182ms 25772 KiB
22 Elfogadva 4/4 179ms 25892 KiB