제출 #873070

#제출 시각아이디문제언어결과실행 시간메모리
873070HossamHero7Naboj (COCI22_naboj)C++14
110 / 110
207 ms30904 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
void solve(){
    int n,m;
    cin>>n>>m;
    vector<int> pos(n+1) , neg(n+1);
    vector<vector<pair<int,int>>> adj(n+1);
    for(int i=0;i<m;i++){
        int a,b;
        cin>>a>>b;
        adj[a].push_back({b,1});
        adj[b].push_back({a,0});
        pos[a] ++;
        neg[b] ++;
    }
    queue<int> q;
    vector<bool> vis(n+1);
    for(int i=1;i<=n;i++){
        if(pos[i] && neg[i]) continue;
        q.push(i);
        vis[i] = 1;
    }
    vector<pair<int,int>> ans;
    while(q.size()){
        int cur = q.front();        q.pop();
        bool curt = 0;
        if(pos[cur]) ans.push_back({cur,1}) , curt = 1;
        if(neg[cur]) ans.push_back({cur,0}) , curt = 0;
        pos[cur] = neg[cur] = 0;
        for(auto [ch,t] : adj[cur]){
            if(vis[ch]) continue;
            if(curt != t) return cout<<-1<<endl , void();
            if(t) neg[ch] --;
            else pos[ch] --;
            if(pos[ch] == 0 || neg[ch] == 0){
                q.push(ch);
                vis[ch] = 1;
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(pos[i] || neg[i]) return cout<<-1<<endl, void();
    }
    reverse(ans.begin(),ans.end());
    cout<<ans.size()<<endl;
    for(auto [i,t] : ans) cout<<i<<' '<<t<<endl;
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);      cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

naboj.cpp: In function 'void solve()':
naboj.cpp:32:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   32 |         for(auto [ch,t] : adj[cur]){
      |                  ^
naboj.cpp:48:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   48 |     for(auto [i,t] : ans) cout<<i<<' '<<t<<endl;
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...