Pagini recente » Cod sursa (job #277246) | Cod sursa (job #376135) | Cod sursa (job #1030080) | Cod sursa (job #1034040) | Cod sursa (job #26202)
Cod sursa(job #26202)
#include <stdio.h>
#include <string.h>
#define MAXN 1024
int N, M, A[MAXN][MAXN], rez[MAXN], Nr[MAXN];
int nr1, nr2, mon1, mon2;
int can[MAXN];
void solve(void)
{
int i, j, k, c;
for(i = 0; i < N; i++)
can[i] = 1;
// presupun ca e mai usoara
for(i = 0; i < M; i++)
{
k = Nr[i];
if(rez[i] == 0)
for(j = 0; j < (k<<1); j++)
can[A[i][j]] = 0;
if(rez[i] == 1)
{
for(j = 0; j < k; j++)
can[A[i][j]] = 0;
for(c = 0, j = k; j < (k<<1); j++)
c += can[A[i][j]];
if(c == 0)
{
memset(can, 0, sizeof(can));
break ;
}
}
if(rez[i] == 2)
{
for(j = k; j < (k<<1); j++)
can[A[i][j]] = 0;
for(c = j = 0; j < k; j++)
c += can[A[i][j]];
if(c == 0)
{
memset(can, 0, sizeof(can));
break ;
}
}
}
for(i = 0; i < N; i++)
nr1 += can[i], mon1 = (can[i] == 1 ? i : mon1);
// presupun ca e mai grea
for(i = 0; i < N; i++)
can[i] = 1;
for(i = 0; i < M; i++)
{
k = Nr[i];
if(rez[i] == 0)
for(j = 0; j < (k<<1); j++)
can[A[i][j]] = 0;
if(rez[i] == 1)
{
for(j = k; j < (k<<1); j++)
can[A[i][j]] = 0;
for(c = j = 0; j < k; j++)
c += can[A[i][j]];
if(c == 0)
{
memset(can, 0, sizeof(can));
break ;
}
}
if(rez[i] == 2)
{
for(j = 0; j < k; j++)
can[A[i][j]] = 0;
for(c = 0, j = k; j < (k<<1); j++)
c += can[A[i][j]];
if(c == 0)
{
memset(can, 0, sizeof(can));
break ;
}
}
}
for(i = 0; i < N; i++)
nr2 += can[i], mon2 = (can[i] == 1 ? i : mon2);
}
void read_data(void)
{
int i, j, k;
scanf("%d %d\n", &N, &M);
for(i = 0; i < M; i++)
{
scanf("%d ", &Nr[i]), k = Nr[i];
for(j = 0; j < (k<<1); j++)
scanf("%d ", &A[i][j]), A[i][j]--;
scanf("%d\n", &rez[i]);
}
}
void write_data(void)
{
if(nr1 == nr2 && nr1 == 1 && mon1 == mon2)
{
printf("%d\n", mon1+1);
return ;
}
if(nr1 == 0 && nr2 == 1)
{
printf("%d\n", mon2+1);
return ;
}
if(nr1 == 1 && nr2 == 0)
{
printf("%d\n", mon1+1);
return ;
}
printf("0\n");
}
int main(void)
{
freopen("balanta.in", "rt", stdin);
freopen("balanta.out", "wt", stdout);
read_data();
solve();
write_data();
return 0;
}