242322026-02-07 10:22:53sarminTestnevelés óracpp17Hibás válasz 48/50347ms32172 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// const ll MOD = 1e9+7;

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()

vector<bool> vis;
vector<bool> ki;
vector<int> res;
vector<vector<int>> g;

bool nem = false;
void dfs(int cur) {
	vis[cur] = true;
	for (int i : g[cur]) {
		if (!vis[i]) dfs(i);
		else if (!ki[i]) {
			nem = true; return;
		}
	}
	ki[cur] = true;
	res.push_back(cur);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k; cin >> n >> k;
    g.resize(n+1); int u, v;
    map<pair<int, int>, bool> m;
    for (int i = 0; i < k; i++) {
    	cin >> u >> v;
    	g[u].push_back(v);
    	m[{u, v}] = true;
    }
    
    vis.resize(n+1, false);
    ki.resize(n+1, false);
    for (int i = 1; i <= n; i++) {
    	if (!vis[i]) dfs(i);
    }
    
    if (nem) {
    	cout << "-1\n";
    	return 0;
    }
    
    reverse(res.begin(), res.end());
    vector<int> res2;
    
    for (int i = 1; i < n; i++) {
    	if (!m[{res[i-1], res[i]}]) {
    		res2 = res;
    		swap(res2[i], res2[i-1]);
    		break;
    	}
    }
    
    cout << (res2.size() == 0 ? 1 : 2) << "\n";
    
    for (int i : res) cout << i << " ";
    if (res2.size() == 0) return 0;
    cout << "\n";
    
    for (int i : res2) cout << i << " ";

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base48/50
1Elfogadva0/01ms320 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/0312ms19632 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Hibás válasz0/11ms500 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/33ms564 KiB
11Elfogadva3/33ms564 KiB
12Hibás válasz0/13ms748 KiB
13Elfogadva2/23ms508 KiB
14Elfogadva3/32ms564 KiB
15Elfogadva1/1252ms16820 KiB
16Elfogadva3/3179ms17948 KiB
17Elfogadva5/543ms9268 KiB
18Elfogadva1/1328ms25504 KiB
19Elfogadva2/2300ms16632 KiB
20Elfogadva3/3303ms26876 KiB
21Elfogadva4/4289ms32172 KiB
22Elfogadva4/4347ms28840 KiB