Cod sursa(job #1009611)

Utilizator dd1997Dan Vasile dd1997 Data 13 octombrie 2013 15:58:10
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <iostream>
#include <fstream>
#include <stack>

using namespace std;

ifstream f ("liste.in");
ofstream g ("liste.out");

stack <int> s;
int L, K, i, j, n, v, a, b, c;

int main()
{
    f >> L;
    int m[L+1][121];
    for (i = 0; i <= L; i++)
        for (j = 0; j <= 120; j++)
            m[i][j] = 0;
    for(i=1; i<=L; i++)
    {
        f >> n;
        for(; n>0; n--)
        {
            f >> v;
            m[i][v] = 1;
        }
    }
    s.push(1);
    for(i = 2; i <= L; i++)
    {
        a = s.top();
        b = i;
        s.push(b);
        c = 0;
        for (j = 0; j <= 120; j++)
        {
            if ((m [a][j]==1)&&(m [b][j]==1))
            {
                for (j = 0; j <=120; j++)
                {
                    if (m[b][j]==1)
                        m[a][j] = 1;
                }
                s.pop();
                c = 1;
                break;
            }
        }
        while (c == 1)
        {
            if (s.top()==1)
                break;
            b = s.top();
            s.pop();
            a = s.top();
            s.push(b);
            c = 0;
            for (j = 0; j <= 120; j++)
            {
                if ((m [a][j]==1)&&(m [b][j]==1))
                {
                    for (j = 0; j <=120; j++)
                    {
                        if (m[b][j]==1)
                            m[a][j] = 1;
                    }
                    s.pop();
                    c = 1;
                    break;
                }
            }
        }
    }
    c = 1;
    while(s.top()!=1)
    {
        s.pop();
        c++;
    }
    g << c;
    return 0;
}