Submission #660258

#TimeUsernameProblemLanguageResultExecution timeMemory
660258berrNaboj (COCI22_naboj)C++17
110 / 110
381 ms40416 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+37;
vector<int> adj[N], radj[N], siz(N), vis(N);
int flag=1;

void dfs(int x, int y)
{
    vis[x]=1;
    for(auto i: adj[x])
    {
        if(i==y) continue;
        if(vis[i]==1) flag=0;
        else if(vis[i]==0)dfs(i, x);
    }
    vis[x]=2;
}

int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
        
    int n, m; cin>>n>>m;
    for(int i=0; i<m; i++)
    {
        int x, y; cin>>x>>y;
        adj[x].push_back(y);
        radj[y].push_back(x); 
        siz[x]++;   
    }
    queue<int> q;

    for(int i=1; i<=n; i++)
    {
        if(!vis[i]) dfs(i, i);

        if(siz[i]==0) q.push(i);
    }

    if(!flag)
    {
        cout<<-1; return 0;
    }

    else
    {
        vector<array<int, 2>> ans;

        while(q.size())
        {
            int x=q.front(); q.pop();
            ans.push_back({x, 1});
            for(auto i: radj[x])
            {
                siz[i]--;
                if(siz[i]==0) q.push(i);
            }

        }

        cout<<ans.size()<<"\n";
            for(auto i: ans) cout<<i[0]<<" "<<i[1]<<"\n";

    }
}   
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...