P2999 RE求助
  • 板块题目总版
  • 楼主hcj2010
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/6/18 23:03
  • 上次更新2024/6/19 14:21:01
查看原帖
P2999 RE求助
675699
hcj2010楼主2024/6/18 23:03

RE 0分求调

#include<bits/stdc++.h>
using namespace std;

const int N = 100005;

int n, f[N], in[N], out[N], cnt, deg[N];
vector<int> g[N];
queue<int> q;

bool topo()
{
	for(int i = 1; i <= n; i++)
		if(!in[i])
		{
			q.push(i);
			cnt++;
			f[i] = 1;
		}
	while(!q.empty())
	{
		int u = q.front();
		q.pop();
		if(out[u] > 1)
			continue;
		for(int v:g[u])
		{
			if(--in[v] == 0)
				q.push(v);
			f[v] += f[u];
		}
	}
}

int main()
{
	cin >> n;
	for(int i = 1, a, b; i < n; i++)
	{
		cin >> a >> b;
		g[a].push_back(b);
		out[a]++;
		in[b]++;
		deg[b]++;
	}
	topo();
	for(int i = 1; i <= n; i++)
		if(f[i] == cnt && deg[i])
			cout << i << endl;
	return 0;
}
2024/6/18 23:03
加载中...