제출 #1333705

#제출 시각아이디문제언어결과실행 시간메모리
1333705justin271828Laser Strike (EGOI25_laserstrike)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

#define ii pair<int, int>
#define f first
#define s second

int main() {
    int P, N;
    cin >> P >> N;
    if (P == 1) {
        int ans = 0;
        vector<int> v[N];
        for (int i = 1; i < N; i++) {
            int a, b;
            cin >> a >> b;
            v[a].push_back(b);
            v[b].push_back(a);
        }
        int root = -1;
        for (int i = 0; i < N; i++) {
            if (v[i].size() >= 3) root = i;
        }
        if (root == -1) {
            
        }
        vector<ii> small;
        vector<ii> large;
        set<int> seta;
        for (int i = 0; i < N; i++) {
            if (v[i].size() != 1) continue;
            if (v[i][0] != root) seta.insert(v[i][0]);
            if (v[i][0] > i) small.push_back({i, v[i][0]});
            else large.push_back({v[i][0], i});
        }
        sort(small.begin(), small.end());
        sort(large.begin(), large.end());
        if (small[small.size()-1] < large[0]) ans = 1;
        cout << ans << "\n";
        if (ans == 1) {
            for (ii p: large) cout << p.f << "\n";
            for (ii p: small) cout << p.s << "\n";
        }
        else {
            for (ii p: small) cout << p.s << "\n";
            for (ii p: large) cout << p.f << "\n";
        }
        for (set<int>::iterator it = seta.begin(); it != seta.end(); it++) {
            int x = *it;
            while (true) {
                if (x == root) break;
                v[x].clear();
                cout << x << "\n";
                if (v[v[x][0]].size() <= 1) x = v[x][1];
                else x = v[x][0];
            }
        }
    }
    else {
        int str;
        cin >> str;
        ii p = {-6, -7};
        bool B = (str == 0);
        set<int> seta;
        int count = N;
        while (count > 0) {
            int a, b;
            cin >> a >> b;
            //if (seta.find(a) != seta.end()) break;
            //if (seta.find(b) != seta.end()) break;
            if ({a, b} < p) B = !B;
            p = {a, b};
            if (B) {
                cout << min(a, b) << "\n";
                seta.insert(max(a, b));}
            else {
                cout << max(a, b) << "\n";
                seta.insert(min(a, b));}
            count--;
        }
        
    }
    return 0;
}

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

Main.cpp: In function 'int main()':
Main.cpp:71:17: error: expected primary-expression before '{' token
   71 |             if ({a, b} < p) B = !B;
      |                 ^
Main.cpp:71:17: error: expected ')' before '{' token
   71 |             if ({a, b} < p) B = !B;
      |                ~^
      |                 )