Pagini recente » Diferente pentru prezentare intre reviziile 22 si 21 | Fetite | Monitorul de evaluare | Cod sursa (job #2845947) | Cod sursa (job #166095)
Cod sursa(job #166095)
#include<fstream.h>
ifstream fin("party.in");
ofstream fout("party.out");
short a[101][101],n,m,s[101],nr;
void incearca()
{nr=0;
short i,j;
for(i=1;i<=n;i++)
if(s[i]!=-2) s[i]=0;
for(i=1;i<=n;i++)
if(s[i]!=-2)
{if(s[i]==0)
{s[i]=1;
nr++;
}
for(j=i+1;j<=n;j++)
{if(a[i][j]==2)
if(s[j]<0)
{s[i]=-2;
incearca();
return;
}
if(a[i][j]==3)
{if(s[j]==1)
{s[i]=-2;
incearca();
return;
}
if(s[j]==0) s[j]=-1;
}
if(a[i][j]==5)
{if(s[j]<0)
{s[i]=-2;
incearca();
return;
}
if(s[j]==0)
{s[j]=1;
nr++;
}
}
}
}
}
int main()
{fin>>n>>m;
int i,j,x,y;
for(i=1;i<=m;i++)
{fin>>x>>y>>j;
if(j==0) j=4;
if(j==1 && (a[x][y]==2 || a[x][y]==5)) a[x][y]=a[y][x]=5;
else
if(j==2 && (a[x][y]==1 || a[x][y]==5)) a[x][y]=a[y][x]=5;
else
{a[x][y]=j;
if(j==1) a[y][x]=2;
if(j==2) a[y][x]=1;
if(j==3 || j==4) a[y][x]=j;
}
}
incearca();
fout<<nr<<"\n";
for(i=1;i<=n;i++)
if(s[i]>0) fout<<i<<"\n";
fin.close();
fout.close();
}