Pagini recente » Cod sursa (job #3294981) | Cod sursa (job #3262402) | jc2020/clasament | Borderou de evaluare (job #153604) | Cod sursa (job #3232141)
//incomplet
#include <bits/stdc++.h>
using namespace std;
ifstream fin("party.in");
ofstream fout("party.out");
vector <int> G[205];
vector < vector <int> > GT(205);
bitset <205> viz;
int comp[205];
int val[205];
vector <int> ord;
void dfs(int nod){
viz[nod] = 1;
for(auto x : G[nod]){
if(!viz[x]) dfs(x);
}
ord.push_back(nod);
}
int t;
void dfs2(int nod){
comp[nod] = t;
for(auto x : GT[nod]){
if(!comp[x]) dfs2(x);
}
}
int main()
{
int n,i,m,u,v,e;
fin >> n >> m;
while(m--){
fin >> u >> v >> e;
if(e & 2) u = -u;
if(e & 1) v = -v;
if(u < 0) u = ((-u - 1) << 1) + 1;
else u = ((u - 1) << 1);
if(v < 0) v = ((-v - 1) << 1) + 1;
else v = ((v - 1) << 1);
G[u ^ 1].push_back(v);
G[v ^ 1].push_back(u);
GT[u].push_back(v ^ 1);
GT[v].push_back(u ^ 1);
}
// for(i = 0; i < (n << 1); i++){
// for(auto x : G[i]) fout << x << " ";
// fout << "\n";
// }
for(i = 0; i < (n << 1); i++){
if(!viz[i]) dfs(i);
}
reverse(ord.begin(), ord.end());
for(auto x : ord){
if(!comp[x]){
t++;
dfs2(x);
}
}
for(i = 0; i < (n << 1); i += 2) val[(i >> 1)] = comp[i] > comp[i + 1];
t = 0;
for(i = 0; i < n; i++){
if(val[i]) t++;
}
fout << t << "\n";
for(i = 0; i < n; i++){
if(val[i]) fout << i + 1 << "\n";
}
}