167672025-05-12 12:55:31RRoliKritikus munkákcpp17Hibás válasz 0/100193ms7524 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, m;
	cin >> n >> m;
	vector<int> be(n+1, 0), be_max(n+1, 0), vegso, jo(n+1, true);
	vector<vector<int>> ki(n+1, vector<int>(0));
	for(int i = 0; i < m; i++) {
		int e, u;
		cin >> e >> u;
		be[u]++;
        be_max[u]++;
		ki[e].push_back(u);
    }

	queue<int> sor;
	for(int i = 1; i <= n; i++) {
		if(be[i] == 0) {
			sor.push(i);
		}
	}

	while(sor.size() > 0) {
        bool benne_van = false;
        if(sor.size() == 1 && jo[sor.front()]) {
            vegso.push_back(sor.front());
            benne_van = true;
        }
        for(auto i : ki[sor.front()]) {
            if(be[i] != be_max[i] && benne_van) {
                vegso.pop_back();
                benne_van = false;
            }
            be[i]--;
            if(be[i] == 0) {
                sor.push(i);
            }
        }
        sor.pop();
    }
		
	cout << vegso.size() << '\n';
	for(auto i : vegso) cout << i << ' ';
	
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms508 KiB
2Hibás válasz114ms4916 KiB
subtask20/25
3Hibás válasz1ms512 KiB
4Hibás válasz1ms496 KiB
5Hibás válasz2ms316 KiB
6Hibás válasz1ms508 KiB
7Hibás válasz4ms316 KiB
subtask30/25
8Hibás válasz32ms728 KiB
9Hibás válasz13ms792 KiB
10Hibás válasz13ms564 KiB
11Hibás válasz21ms752 KiB
12Hibás válasz23ms820 KiB
subtask40/25
13Hibás válasz78ms3380 KiB
14Hibás válasz90ms3892 KiB
15Hibás válasz89ms3988 KiB
16Hibás válasz83ms3884 KiB
17Hibás válasz82ms3892 KiB
subtask50/25
18Hibás válasz185ms7488 KiB
19Hibás válasz193ms7476 KiB
20Hibás válasz180ms7508 KiB
21Hibás válasz185ms7476 KiB
22Hibás válasz164ms7524 KiB