Pagini recente » Cod sursa (job #462130) | Cod sursa (job #2146967) | Cod sursa (job #2151860) | Cod sursa (job #1563180) | Cod sursa (job #1009611)
#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;
}