제출 #1346293

#제출 시각아이디문제언어결과실행 시간메모리
1346293tamir1Ronald (COCI17_ronald)C++20
120 / 120
17 ms6928 KiB
#include <bits/stdc++.h>
using namespace std;


#define int long long
#define ff first
#define ss second
#define sz(a) (int)(a).size()
#define all(a) (a).begin(),(a).end()
#define pb push_back



vector<vector<int>> adj;
vector<int> L, R;
vector<bool> vis;

void dfs(int u) {
    R.pb(u);
    vis[u] = 1;
    for(int v : adj[u]) {
        if(!vis[v]) dfs(v);
    }
}

bool check(vector<int> &a) {
    int cnt = 0;
    for(int &u : a) {
        cnt += sz(adj[u]);
    }
    int n = sz(a);
    return cnt == (n * (n - 1));
}

signed main() {
    ios_base::sync_with_stdio(0);cin.tie(0);


    int n, m;
    cin >> n >> m;
    adj.assign(n, {});
    for(int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        u--;
        v--;
        adj[u].pb(v);
        adj[v].pb(u);
    }
    vis.assign(n, 0);
    int cnt = 0;
    for(int i = 0; i < n; i++) {
        if(!vis[i]) {
            if(cnt == 1) {
                L = R;
                R.clear();
            }
            cnt++;
            dfs(i);
        }
    }
    if(cnt > 2) {
        cout << "NE\n";
        return 0;
    }
    if(cnt == 1) {
        cout << (check(R) ? "DA" : "NE");
    } else {
        cout << (check(R) && check(L) ? "DA" : "NE");
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...