179682025-09-24 17:57:47algoproTestnevelés óracpp17Accepted 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 << ' ';
	}
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted0/0100ms8888 KiB
4Accepted2/21ms316 KiB
5Accepted3/31ms376 KiB
6Accepted3/31ms328 KiB
7Accepted3/31ms316 KiB
8Accepted1/11ms316 KiB
9Accepted3/31ms316 KiB
10Accepted3/32ms460 KiB
11Accepted3/32ms316 KiB
12Accepted1/12ms344 KiB
13Accepted2/22ms472 KiB
14Accepted3/31ms316 KiB
15Accepted1/175ms5884 KiB
16Accepted3/393ms11052 KiB
17Accepted5/539ms12460 KiB
18Accepted1/1115ms15912 KiB
19Accepted2/279ms6028 KiB
20Accepted3/3116ms13024 KiB
21Accepted4/4116ms12880 KiB
22Accepted4/4103ms12964 KiB