Timus 1106 Two Teams Solution

#include <iostream>
#include <vector>
// #include <bitset>
#include <algorithm>
// #include <map>
// #include <queue>
using namespace std;
vector<int> team(101,-1);
vector<vector<int> > a(101);
vector<int> ans;
void dfs(int u,int k){
    team[u]=k;
    if(k)ans.push_back(u);
    for(int i=0;i<a[u].size();i++){
        if(team[a[u][i]]==-1)
            dfs(a[u][i],1-k);
    }
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        while(x){
            a[i].push_back(x);
            cin>>x;
        }
    }
    for(int i=1;i<=n;i++)
        if(team[i]==-1)
            dfs(i,0);
    cout<<ans.size()<<endl;
    cout<<ans[0];
    for(int i=1;i<ans.size();i++)
        cout<<' '<<ans[i];
}

Comments