236752026-01-27 10:42:00matemakaiLegtöbb unoka (80 pont)cpp17Accepted 80/808ms1588 KiB
#include <bits/stdc++.h>
using namespace std;

pair<int, int> dfs(int node, vector<vector<int>>& adj, vector<int>& cnt) {
	pair<int, int> p = {1, 0};

	for (auto child : adj[node]) {
		auto tmp_p = dfs(child, adj, cnt);
		cnt[node] += tmp_p.second;
		p.second += tmp_p.first;
	}

	return p;
}

int main() {
	int n, m;
	cin >> n >> m;
	vector<vector<int>> adj(n);
	vector<int> indegree(n);
	for (int i = 0; i < m; ++i) {
		int j, c;
		cin >> j >> c;
		--j;
		--c;
		adj[j].push_back(c);
		++indegree[c];
	}

	vector<int> roots;

	for (int i = 0; i < n; ++i) {
		if (indegree[i] == 0) {
			roots.push_back(i);
		}
	}

	vector<int> cnt(n);
	for (auto root : roots) {
		dfs(root, adj, cnt);
	}

	int ans = 0;

	for (int i = 0; i < n; ++i) {
		if (cnt[i] > cnt[ans]) {
			ans = i;
		}
	}

	if (cnt[ans]) {
		cout << ans + 1 << " " << cnt[ans] << endl;
	} else {
		cout << -1 << endl;
	}
}
SubtaskSumTestVerdictTimeMemory
base80/80
1Accepted0/01ms500 KiB
2Accepted0/04ms820 KiB
3Accepted4/41ms316 KiB
4Accepted4/41ms316 KiB
5Accepted4/48ms820 KiB
6Accepted4/48ms804 KiB
7Accepted4/41ms316 KiB
8Accepted4/41ms316 KiB
9Accepted4/44ms608 KiB
10Accepted4/48ms708 KiB
11Accepted4/48ms820 KiB
12Accepted4/44ms820 KiB
13Accepted4/48ms1336 KiB
14Accepted4/48ms1076 KiB
15Accepted4/48ms700 KiB
16Accepted4/48ms820 KiB
17Accepted4/48ms1588 KiB
18Accepted4/48ms1308 KiB
19Accepted2/21ms564 KiB
20Accepted2/22ms564 KiB
21Accepted3/31ms580 KiB
22Accepted3/32ms1012 KiB
23Accepted3/38ms1556 KiB
24Accepted3/38ms1408 KiB