Pagini recente » Cod sursa (job #359158) | Cod sursa (job #542076) | Cod sursa (job #602779) | Cod sursa (job #620636) | Cod sursa (job #1684032)
#include <bits/stdc++.h>
#define Nmax 205
#define pb push_back
using namespace std;
vector <int> L[Nmax],T[Nmax],sol;
int ans[Nmax],viz[Nmax],v[Nmax],l,marked[Nmax],n;
inline int non(int x)
{
if(x<=n) return x+n;
return x-n;
}
inline void Dfs(int nod)
{
viz[nod]=1;
for(auto it : L[nod])
if(!viz[it]) Dfs(it);
v[++l]=nod;
}
inline void Dfs1(int nod)
{
marked[nod]=1;
ans[nod]=0; ans[non(nod)]=1;
for(auto it : T[nod])
{
if(marked[it]) continue;
Dfs1(it);
}
}
int main()
{
int i,m,x,y,z;
ifstream cin("party.in");
ofstream cout("party.out");
cin>>n>>m;
while(m--)
{
cin>>x>>y>>z;
if(!z)
{
L[non(x)].pb(y); T[y].pb(non(x));
L[non(y)].pb(x); T[x].pb(non(y));
}
else
if(z==1)
{
L[non(x)].pb(non(y)); T[non(y)].pb(non(x));
}
else
if(z==2)
{
L[non(y)].pb(non(x)); T[non(x)].pb(non(y));
}
else
{
L[x].pb(non(y)); T[non(y)].pb(x);
L[y].pb(non(x)); T[non(x)].pb(y);
}
}
for(i=1;i<=2*n;++i)
if(!viz[i]) Dfs(i);
for(i=2*n;i;--i)
if(!marked[v[i]]) Dfs1(v[i]);
for(i=1;i<=n;++i)
if(ans[i]) sol.pb(i);
cout<<sol.size()<<"\n";
for(auto it : sol) cout<<it<<"\n";
return 0;
}