Cod sursa(job #2602045)

Utilizator alexradu04Radu Alexandru alexradu04 Data 15 aprilie 2020 18:21:04
Problema Party Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<fstream>
#include<iostream>
#include<vector>
#define pb push_back
#define DN 205
using namespace std;
ifstream fin("party.in");
ofstream fout("party.out");
int n,m,a,b,type,viz[DN],st[DN],top,r[DN],rez[DN],nr;
vector<int>g[DN];
void dfs(int nod)
{
    viz[nod]=1;
    for(auto i:g[nod])
        if(!viz[i])
            dfs(i);
    top++;
    st[top]=nod-n;
}
int main()
{
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>a>>b>>type;
        if(type==1)
            b=-b;
        else
        if(type==2)
            a=-a;
        else
        if(type==3)
        {
            a=-a;
            b=-b;
        }
        g[-a+n].pb(b+n);
        g[-b+n].pb(a+n);
    }
    for(int i=2*n;i>=0;i--)
        if(!viz[i]&&g[i].size())
        {
            dfs(i);
        }
    for(int i=top;i>=1;i--)
        if(!r[st[i]+n]&&!r[-st[i]+n])
            r[-st[i]+n]=1;
    for(int i=1;i<=n;i++)
        if(r[i+n]||(!r[i+n]&&!r[-i+n]))
        {
            nr++;
            rez[nr]=i;
        }
    fout<<nr<<'\n';
    for(int i=1;i<=nr;i++)
        fout<<rez[i]<<'\n';
}