1080
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <math.h>
#include <limits.h>
 
using namespace std;
 
// Datatypes
typedef vector<int> vi; 
typedef vector<string> vs;
typedef vector<vi> vvi; 
typedef pair<int,int> ii; 
typedef long long ll;
typedef long double ld;
 
// Define
#define sz(a)             int((a).size()) 
#define pb                push_back 
#define all(c)            (c).begin(),(c).end() 
#define present(c,x)      ((c).find(x) != (c).end()) 
#define cpresent(c,x)     (find(all(c),x) != (c).end()) 
#define FOR(_i,_n)        for(int (_i) = 0; (_i) < (_n); (_i)++)
#define mp                make_pair
 
int st[100];
map< int, vi > m;
 
int dfs(int v, int c)
{
    if(st[v] == -1)
    {
        st[v] = c;
 
        FOR(i,sz(m[v]))
        {
            if(st[ m[v][i] ] == c)
                return 1;
 
            if(st[ m[v][i] ] == -1)
            {
                if(dfs(m[v][i], ((c == 0)?1:0)))
                    return 1;
            }
        }
    }
    return 0;
}
 
int main(void)
{
 
    int n;
 
    cin >> n;
 
    FOR(i,n)
        st[i] = -1;
 
    FOR(i,n)
    {
        int v;
        cin >> v;
        while(v != 0)
        {
            m[i].pb(v-1);
            cin >> v;
        }
    }
 
    FOR(i,n)
    {
        if(dfs(i, 0))
        {
            cout << -1;
            return 0;
        }
    }
 
    FOR(i,n)
        cout << st[i];
 
    return 0;
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.