Submission #705043

#TimeUsernameProblemLanguageResultExecution timeMemory
705043Paul_Liao_1457Naboj (COCI22_naboj)C++17
110 / 110
230 ms15120 KiB
//記得跳題
//#pragma GCC optimize("O4,unroll_loops")
//#pragma GCC target("avx2")
#include<iostream>
#include<array>
#include<vector>
#include<string>
#include<algorithm>
#include<set>
#include<queue>
#include<stack>
#include<math.h>
#include<map>
#include<unordered_map>
#include<unordered_set>
#include<cstring>
#include<iomanip>
#include<bitset>
#include<tuple>
#include<random>
 
#define ll long long
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define pb push_back
#define INF (ll)(2e18)
#define F first
#define S second
#define endl "\n"
#define AC ios::sync_with_stdio(0);
 
using namespace std;

int n, m;
int in[200005];
vector<int> e[200005];
vector<pair<int, int> > ans;

signed main(){
  AC;
  cin >> n >> m;
  FOR (i, 0, m) {
    int a, b; cin >> a >> b;
    in[b]++;
    e[a].pb(b);
  }
  
  queue<int> Q;
  FOR (i, 1, n+1) if (!in[i]) {
    Q.push(i);
  }
  
  int cnt = 0;
  while (Q.size()) {
    int now = Q.front(); Q.pop();
    ans.pb({now, 0});
    cnt++;
    for (auto i:e[now]) {
      in[i]--;
      if (!in[i]) {
        Q.push(i);
      }
    }
  }
  
  if (cnt != n) {
    cout << -1 << endl;
  } else {
    cout << ans.size() << endl;
    for (auto i:ans) {
      cout << i.F << " " << i.S << endl;
    }
  }
  
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...