Pagini recente » Cod sursa (job #1210728) | Cod sursa (job #1539388) | Cod sursa (job #541867) | Cod sursa (job #1475076) | Cod sursa (job #583312)
Cod sursa(job #583312)
var a,b:array[1..100] of boolean;
m:array[1..100] of integer;
v:array[1..3,1..1000] of longint;
n,t,i,nr:longint;
f,g:text;
procedure verificare;
var i,x,y,z,s:longint;
boo:boolean;
begin
boo:=true;
for i:=1 to t do
begin
x:=v[1,i]; y:=v[2,i]; z:=v[3,i];
if z=0 then
begin
if not a[x] or not a[y] then
begin
boo:=false;
break;
end;
end else
if (z=1)or(z=2) then
begin
if not a[x] and a[y] then
begin
boo:=false;
break;
end
end else
if z=3 then
begin
if a[x] and a[y] then
begin
boo:=false;
break;
end;
end;
end;
if boo then
begin
s:=0;
for i:=1 to n do
if a[i] then inc(s);
if s>nr then
begin
nr:=s;
b:=a;
end;
end;
end;
procedure party(p:longint);
var x,y,z:longint;
begin
if p>t then verificare
else
begin
x:=v[1,p]; y:=v[2,p]; z:=v[3,p];
if z=0 then
begin
a[x]:=true;
a[y]:=true;
m[x]:=1;
m[y]:=1;
party(p+1);
end else
if (z=1)or(z=2) then
begin
if a[x] then
begin
party(p+1);
if m[y]=0 then
begin
a[y]:=not(a[y]);
party(p+1);
end;
end else
begin
a[y]:=false;
party(p+1);
end;
end else
if z=3 then
begin
if not a[x] or not a[y] then
party(p+1) else
begin
if m[x]=0 then
begin
a[x]:=false;
party(p+1);
if m[y]=0 then
begin
a[x]:=true;
a[y]:=false;
party(p+1);
a[x]:=false;
party(p+1);
end;
end;
end;
end;
end;
end;
begin
assign(f,'party.in');
assign(g,'party.out');
reset(f);
rewrite(g);
readln(f,n,t);
nr:=0;
for i:=1 to t do
readln(f,v[1,i],v[2,i],v[3,i]);
for i:=1 to n do
begin
a[i]:=true;
m[i]:=0;
end;
party(1);
writeln(g,nr);
for i:=1 to n do
if b[i] then
writeln(g,i);
close(g);
end.