180282025-09-25 16:44:51algoproTestnevelés óracpp17Elfogadva 50/50223ms20480 KiB
// UUID: 73e07ab8-52a8-4754-920d-f389a858c42b
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k;
	cin >> n >> k;
	vector<vector<int>> nbrs(n);
	vector<int> indeg(n);
	for(int i=0;i<k;i++){
		int u, v;
		cin >> u >> v;
		nbrs[u-1].push_back(v-1);
		indeg[v-1]++;
	}
	queue<int> q;
	for(int i=0;i<n;i++) if(indeg[i]==0) q.push(i);
	vector<int> vis(n, 0), bucketOf(n, 0);
	vector<vector<int>> bucket(n);
	while(!q.empty()){
		int i=q.front();
		q.pop();
		bucket[bucketOf[i]].push_back(i);
		vis[i]=2;
		for(int j : nbrs[i]){
			if((--indeg[j])<=0){
				if(vis[j]==0){
					bucketOf[j]=bucketOf[i]+1;
					q.push(j);
					vis[j]=1;
				}
				else if(vis[j]==1){
					cout << 0;
					return 0;
				}
			}
		}
	}
	for(int i=0;i<n;i++) if(0!=indeg[i]){
		cout << 0;
		return 0;
	}
	cout << 2-(bucket[n-1].size()) << '\n';
	for(int t=0;t<2;t++){
		for(int i=0;i<n;i++){
			if(bucket[i].size()<=0) break;
			for(int j : bucket[i]) cout << j+1 << ' ';
		}
		cout << '\n';
		if(bucket[n-1].size()<=0){
			for(int i=0;i<n;i++) if(1<bucket[i].size()) swap(bucket[i][0], bucket[i][1]);
			continue;
		}
		break;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/0194ms10096 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva3/31ms500 KiB
10Elfogadva3/33ms428 KiB
11Elfogadva3/33ms316 KiB
12Elfogadva1/12ms316 KiB
13Elfogadva2/23ms316 KiB
14Elfogadva3/32ms320 KiB
15Elfogadva1/1167ms7100 KiB
16Elfogadva3/3149ms13692 KiB
17Elfogadva5/550ms16332 KiB
18Elfogadva1/1223ms19652 KiB
19Elfogadva2/2163ms7484 KiB
20Elfogadva3/3223ms20480 KiB
21Elfogadva4/4209ms20452 KiB
22Elfogadva4/4216ms20276 KiB