Pagini recente » Cod sursa (job #645732) | Cod sursa (job #2040001) | Cod sursa (job #1218839) | Cod sursa (job #690696) | Cod sursa (job #211565)
Cod sursa(job #211565)
#include <fstream>
#include <bitset>
using namespace std;
typedef struct rel{
int tip,x,y;
};
int N,M,nr;
bitset<101> inv,viz;
bitset<1001> u;
rel v[1001];
ifstream f("party.in");
ofstream g("party.out");
void redu(int i,int val){
int j;
viz[i]=1;inv[i]=val;
if (val==1){
for (j=1;j<=M;++j)
if (!u[j])
if (v[j].x==i || v[j].y==i)
switch(v[j].tip){
case 0:u[j]=1;
break;
case 1:u[j]=1;
if (v[j].y==i) redu(v[j].x,1);
break;
case 2:u[j]=1;
if (v[j].x==i) redu(v[j].y,1);
break;
case 3:u[j]=1;
if (v[j].x==i) redu(v[j].y,0);
else redu(v[j].x,0);
break;
}
}else{
for (j=1;j<=M;++j)
if (!u[j])
if (v[j].x==i || v[j].y==i)
switch(v[j].tip){
case 0:u[j]=1;
if (v[j].x==i) redu(v[j].y,1);
else redu(v[j].x,1);
break;
case 1:u[j]=1;
if (v[j].x==i) redu(v[j].y,0);
break;
case 2:u[j]=1;
if (v[j].y==i) redu(v[j].x,0);
break;
case 3:u[j]=1;
}
}
}
int main(){
int i;
f>>N>>M;
for (i=1;i<=M;++i){
f>>v[i].x>>v[i].y>>v[i].tip;
if (v[i].x==v[i].y){
u[i]=1;
if (v[i].tip==0) redu(v[i].x,1);
if (v[i].tip==3) redu(v[i].x,0);}
}
for (i=1;i<=N;++i)
if (!viz[i])
redu(i,1);
for (i=1;i<=N;++i)
if (inv[i]==1) ++nr;
g<<nr<<'\n';;
for (i=1;i<=N;++i)
if (inv[i]==1) g<<i<<'\n';
return 0;
}