179682025-09-24 17:57:47algoproTestnevelés óracpp17Elfogadva 50/50116ms15912 KiB
// UUID: 4e4cb332-b7cf-48bd-be71-229167dba423
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using pll=pair<ll, ll>;

int main() {
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	ll n, k; cin >> n >> k;
	vector<vector<ll>> vec(n);
	vector<ll> count(n);
	queue<ll> q;
	vector<ll> out;
	for (ll i=0; i<k; i++){
		ll a, b; cin >> a >> b; a--; b--;
		vec[a].push_back(b);
		count[b]++;
	}
	for (ll i=0; i<n; i++)
		if (count[i]==0)
			q.push(i);
	for (ll i=0; i<n; i++){
		if (q.empty()){
			cout << 0;
			return 0;
		}
		ll x=q.front();
		q.pop();
		out.push_back(x);
		for (auto z:vec[x]){
			count[z]--;
			if (count[z]==0) q.push(z);
		}
	}

	for (ll i=0; i<n-1; i++){
		bool b=false;
		for (auto z:vec[out[i]])
			if (z==out[i+1])
				b=true;
		if (!b){
			cout << 2 << '\n';
			for (auto z:out){
				cout << z+1 << ' ';
			}
			cout << '\n';
			for (ll j=0; j<n; j++){
				if (j==i) cout << out[j+1]+1 << ' ';
				else if (j==i+1) cout << out[j-1]+1 << ' ';
				else cout << out[j]+1 << ' ';
			}
			return 0;
		}
	}

	cout << 1 << '\n';
	for (auto z:out){
		cout << z+1 << ' ';
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/0100ms8888 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms376 KiB
6Elfogadva3/31ms328 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/32ms460 KiB
11Elfogadva3/32ms316 KiB
12Elfogadva1/12ms344 KiB
13Elfogadva2/22ms472 KiB
14Elfogadva3/31ms316 KiB
15Elfogadva1/175ms5884 KiB
16Elfogadva3/393ms11052 KiB
17Elfogadva5/539ms12460 KiB
18Elfogadva1/1115ms15912 KiB
19Elfogadva2/279ms6028 KiB
20Elfogadva3/3116ms13024 KiB
21Elfogadva4/4116ms12880 KiB
22Elfogadva4/4103ms12964 KiB