제출 #220469

#제출 시각아이디문제언어결과실행 시간메모리
220469CalicoBosses (BOI16_bosses)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

int n, ans = 1000000000;
vector<int> adj[5001];
vector<int> adj_tr[5001];
vector<int> dp(5001);

void dfs(int now) {
	int s = 0;
	for (int u: adj_tr[now]) {
		dfs(u);
		s += dp[u];
	}
	dp[now] = s+1;
}

int bfs(int fi) {
	vector<int> dist(n+1, 10000000), prv(n+1);
	queue<int> q;
	q.push(fi); dist[fi] = 1;

	while (q.size()) {
		int now = q.front(); q.pop();

		for (int u: adj[now]) {
			if (dist[u] > dist[now] + 1) {
				dist[u] = dist[now] + 1;
				q.push(u); prv[u] = now;
			}
		}
	}

	for (int i = 1; i <= n; i++) {
		adj_tr[i].clear(); dp[i] = 0;
	}
	for (int i = 1; i <= n; i++) {
		if (i != fi) {
			if (prv[i] == 0) return;
			adj_tr[prv[i]].push_back(i);
		}
	}

	dfs(fi);
	int rs = 0;
	cout << fi << ": ";
	for (int i = 1; i <= n; i++) {
		rs += dp[i];
		cout << dp[i] << ' ';
	}
	cout << '\n';
	return rs;
}

signed main() {
	ios::sync_with_stdio(0); cin.tie(0);
	
	cin >> n;
	for (int i = 1; i <= n; i++) {
		int k; cin >> k;
		while (k--) {
			int x; cin >> x;
			adj[x].push_back(i);
		}
	}
	for (int i = 1; i <= n; i++) {
		ans = min(ans, bfs(i));
	}
	cout << ans << '\n';

	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

bosses.cpp: In function 'int bfs(int)':
bosses.cpp:39:21: error: return-statement with no value, in function returning 'int' [-fpermissive]
    if (prv[i] == 0) return;
                     ^~~~~~