제출 #220485

#제출 시각아이디문제언어결과실행 시간메모리
220485CalicoBosses (BOI16_bosses)C++17
67 / 100
1582 ms980 KiB
#include <bits/stdc++.h>
using namespace std;
 
int n, ans = 1000000000;
vector<int> adj[5001];
vector<int> adj_tr[5001];
int dp[5001], dist[5001], prv[5001], vis[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) {
	for (int i = 1; i <= n; i++) {
		adj_tr[i].clear();
	}
	memset(dp, 0, sizeof(dp));
	memset(dist, 0, sizeof(dist));
	memset(prv, 0, sizeof(prv));
	memset(vis, 0, sizeof(vis));
 
	queue<int> q;
	q.push(fi); dist[fi] = 1;
 
	while (q.size()) {
		int now = q.front(); q.pop();
		if (vis[now]) continue;
		vis[now] = 1;
 
		for (int u: adj[now]) {
			if (dist[u] == 0) {
				dist[u] = dist[now] + 1;
				q.push(u); prv[u] = now;
			}
		}
	}
 
	for (int i = 1; i <= n; i++) {
		if (i != fi) {
			if (prv[i] == 0) return ans;
			adj_tr[prv[i]].push_back(i);
		}
	}
 
	dfs(fi);
	int rs = 0;
	for (int i = 1; i <= n; i++) {
		rs += dp[i];
	}
	return rs;
}
 
signed main() {
	//ios::sync_with_stdio(0); cin.tie(0);
	
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		int k; scanf("%d", &k);
		while (k--) {
			int x; scanf("%d", &x);
			adj[x].push_back(i);
		}
	}
	for (int i = 1; i <= n; i++) {
		ans = min(ans, bfs(i));
	}
	printf("%d\n", ans);
 
	return 0;
}

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

bosses.cpp: In function 'int main()':
bosses.cpp:61:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
  ~~~~~^~~~~~~~~~
bosses.cpp:63:15: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int k; scanf("%d", &k);
          ~~~~~^~~~~~~~~~
bosses.cpp:65:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    int x; scanf("%d", &x);
           ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...