4408 2023. 03. 27 17:39:27 horvathabel Testnevelés óra cpp17 Elfogadva 50/50 252ms 112732 KiB
#include <bits/stdc++.h>
using namespace std;
vector<int> g[2000001];
int main() {
	int n, m;
	cin>>n>>m;
	vector<int> c;
	c.assign(n+1, 0);
	for (int i=0; i<m;i++){
		int x,y;
		cin>>x>>y;
		c[y]++; 
		g[x].push_back(y);
	}
	queue<int> q;
	for (int i=1;i<=n;i++){
		if (c[i]==0) q.push(i);
	}
	int cnt=0; 
	vector<int> ans;
	pair<int, int> ans2;
	bool van=false, volte=false; 
	while (!q.empty()){
		cnt++;
		if (q.size()>1 && !volte){
			ans2.first=q.front();
			van=true; 
			volte=true;
		}
		int v=q.front();
		ans.push_back(v);
		q.pop();
		if (van){
			ans2.second=q.front(); 
			van=false; 
		}
		for (int edge:g[v]){
			c[edge]-=1;
			if (c[edge]==0) q.push(edge);
		} 
	}
	if (cnt!=n){
		cout<<0<<endl;
		return 0; 
	}
	if (!volte){
		cout<<1<<endl;
		for (int i:ans) cout<<i<<" "; 
	}
	else{
		cout<<2<<endl;
		vector<int> mego; 
		for (int i=0; i<n;i++){
			cout<<ans[i]<<" ";
			if (ans[i]==ans2.first) mego.push_back(ans2.second);
			else{
				if (ans[i]==ans2.second) mego.push_back(ans2.first);
				else mego.push_back(ans[i]);
			}
		}
		cout<<endl;
		for (int i:mego) cout<<i<<" ";
	}
	
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 35ms 95700 KiB
2 Elfogadva 0/0 45ms 95952 KiB
3 Elfogadva 0/0 211ms 104040 KiB
4 Elfogadva 2/2 46ms 96168 KiB
5 Elfogadva 3/3 37ms 96420 KiB
6 Elfogadva 3/3 35ms 96412 KiB
7 Elfogadva 3/3 35ms 96632 KiB
8 Elfogadva 1/1 35ms 96840 KiB
9 Elfogadva 3/3 45ms 97060 KiB
10 Elfogadva 3/3 39ms 97224 KiB
11 Elfogadva 3/3 37ms 97444 KiB
12 Elfogadva 1/1 46ms 97736 KiB
13 Elfogadva 2/2 46ms 97948 KiB
14 Elfogadva 3/3 37ms 97904 KiB
15 Elfogadva 1/1 206ms 103216 KiB
16 Elfogadva 3/3 168ms 109304 KiB
17 Elfogadva 5/5 100ms 105316 KiB
18 Elfogadva 1/1 252ms 112720 KiB
19 Elfogadva 2/2 185ms 103556 KiB
20 Elfogadva 3/3 219ms 112716 KiB
21 Elfogadva 4/4 204ms 112696 KiB
22 Elfogadva 4/4 222ms 112732 KiB