242342026-02-07 10:28:45sarminTestnevelés óracpp17Hibás válasz 48/50342ms32172 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;
		}
	}
	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 && !nem; i++) if (!vis[i]) dfs(i);
    
    if (nem) {
    	cout << "-1";
    	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/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva0/0307ms19632 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Hibás válasz0/11ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/33ms564 KiB
11Elfogadva3/33ms564 KiB
12Hibás válasz0/12ms564 KiB
13Elfogadva2/23ms564 KiB
14Elfogadva3/32ms316 KiB
15Elfogadva1/1254ms16812 KiB
16Elfogadva3/3175ms17836 KiB
17Elfogadva5/543ms9364 KiB
18Elfogadva1/1321ms25508 KiB
19Elfogadva2/2293ms16744 KiB
20Elfogadva3/3303ms26796 KiB
21Elfogadva4/4284ms32172 KiB
22Elfogadva4/4342ms28840 KiB