168082025-05-13 17:26:39horkaKét csoportcpp17Accepted 100/100199ms20036 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> kis,ossz;
vector<int> csop;
void dfs(int cs)
{
	int hany=0;
	for(int &x:ossz[cs])
		if(csop[x]==csop[cs]) hany++;
	if(hany<=1) return;
	if(hany==3)
	{
		csop[cs]=3-csop[cs];
		return;
	}
	csop[cs]=3-csop[cs];
	int ind=0;
	for(int &x:ossz[cs])
		if(csop[x]==csop[cs]) ind=x;
	dfs(ind); 
}
int main() {
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n; cin>>n;
	ossz.assign(n+1,vector<int>());
	csop.assign(n+1,0);
	for(int i=1; i<=n; i++)
	{
		while(1)
		{
			int x; cin>>x;
			if(x==0) break;
			ossz[i].push_back(x);
		}
	}
	for(int i=1; i<=n; i++)
	{
		csop[i]=1;
		dfs(i);
		for(int &x:ossz[i])
		{
			if(x>i) continue;
			int hany=0;
			for(int &j:ossz[x])
				if(csop[j]==csop[x]) hany++;
			if(hany>1) dfs(x); 
		}
	}
	vector<int> ans;
	for(int i=1; i<=n; i++)
		if(csop[i]==1) ans.push_back(i);
	cout<<(int)ans.size()<<"\n";
	for(int &i:ans)
		cout<<i<<" ";
	cout<<"\n";
}
SubtaskSumTestVerdictTimeMemory
base100/100
1Accepted0/01ms508 KiB
2Accepted0/054ms6832 KiB
3Accepted3/31ms316 KiB
4Accepted3/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms316 KiB
7Accepted3/31ms316 KiB
8Accepted2/21ms316 KiB
9Accepted3/31ms316 KiB
10Accepted3/31ms316 KiB
11Accepted3/31ms316 KiB
12Accepted3/36ms1080 KiB
13Accepted3/37ms1076 KiB
14Accepted3/37ms1076 KiB
15Accepted6/654ms6964 KiB
16Accepted7/759ms6744 KiB
17Accepted7/764ms6808 KiB
18Accepted6/6114ms13564 KiB
19Accepted6/6119ms13228 KiB
20Accepted6/6129ms13152 KiB
21Accepted6/6172ms20036 KiB
22Accepted7/7182ms19884 KiB
23Accepted7/7199ms19624 KiB
24Accepted7/7195ms19596 KiB