Esempio n. 1
0
	void	addPolygon( const TIntVector& ib )
	{
		++polygonCount;

		TIntVector::const_iterator vit, vitEnd = ib.end();
		for( vit = ib.begin(); vit != vitEnd; ++vit ) {
			int idx = *vit;
			assert( idx >= 0 && idx < vertexUseCount.size() );
			vertices.insert( idx );
			++vertexUseCount[idx];
			int idxNext = (vit==vitEnd-1) ? ib.front() : *(vit+1);
			int idxPrev = (vit==ib.begin()) ? ib.back() : *(vit-1);
			vertexNexts[idx].push_back( idxNext );
			vertexPrevs[idx].push_back( idxPrev );
		}
	}
Esempio n. 2
0
int main()
{
#ifndef ONLINE_JUDGE
    ifstream fIn("input.txt");
    cin.rdbuf( fIn.rdbuf() );
#endif

    int n;
    int m;
    cin >> n >> m;

    TBoolVector dummy(2*n, false);
    TMatrix g(2*n, dummy);
    for (int i = 0; i < m; ++i)
    {
        int a;
        int b;
        cin >> a >> b;
        --a;
        --b;
        g[a][b] = true;
        g[b][a] = true;
    }
    for (int i = 0; i < 2 * n; ++i)
    {
        g[i][i] = true;
    }

    TIntVector s;
    s.push_back(0);
    int next = 1;
    do
    {
        int i = next;
        for (; i < 2 * n; ++i)
        {
            int j = 0;
            while (j < s.size() && !g[s[j]][i])
            {
                ++j;
            }
            if (j == s.size())
            {
                break;
            }
        }
        if (i == 2 * n)
        {
            next = s.back() + 1;
            s.pop_back();
        }
        else
        {
            next = 1;
            s.push_back(i);
        }
    } while (!s.empty() && s.size() != n);

    if (s.size() == n)
    {
        for (int i = 0; i < 2 * n; ++i)
        {
            if (find(s.begin(), s.end(), i) != s.end())
            {
                cout << i + 1 << " ";
            }
        }
        cout << endl;
        for (int i = 0; i < 2 * n; ++i)
        {
            if (find(s.begin(), s.end(), i) == s.end())
            {
                cout << i + 1 << " ";
            }
        }
        cout << endl;
    }
    else
    {
        cout << "IMPOSSIBLE\n";
    }

    return 0;
}