제출 #1146588

#제출 시각아이디문제언어결과실행 시간메모리
1146588TsaganaFlood (IOI07_flood)C++20
55 / 100
53 ms9032 KiB
#include<bits/stdc++.h> #define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie(); #define all(x) x.begin(), x.end() #define int long long #define pq priority_queue #define eb emplace_back #define lb lower_bound #define ub upper_bound #define pb push_back #define pp pop_back #define F first #define S second using namespace std; int n, m; pair<int, int> adj[100010][4]; pair<int, int> a[100010]; vector<int> ans; int vis[100010]; int s[10010]; bool cmp(int x, int y) {return a[x] < a[y];} int calc(int x, int d) { if (vis[x]) return x; vis[x] = 1; for (int i = 0; i < 4; i++) { int tod = (d - i + 1 + 4) % 4; int to = adj[x][tod].F; if (to == -1) continue; int ed = adj[x][tod].S; adj[x][tod] = {-1, -1}; adj[to][(tod+2)%4] = {-1, -1}; int y = calc(to, tod); if (y == -1) {ans.pb(ed); continue;} if (y != x) {vis[x] = 0; return y;} } vis[x] = 0; return -1; } void solve () { cin >> n; for(int i = 0; i < n; i++) { s[i] = i; cin >> a[i].F >> a[i].S; for (int j = 0; j < 4; j++) adj[i][j] = {-1, -1}; } sort(s, s + n, cmp); cin >> m; for (int i = 1; i <= m; i++) { int x, y; cin >> x >> y; x--; y--; if (a[x].F == a[y].F) { if (a[x].S > a[y].S) swap(x, y); adj[x][0] = {y, i}; adj[y][2] = {x, i}; } else { if (a[x].F > a[y].F) swap(x, y); adj[x][1] = {y, i}; adj[y][3] = {x, i}; } } for (int i = 0; i < n; i++) calc(s[i], 0); cout << ans.size() << '\n'; for (int i: ans) cout << i << '\n'; } signed main() {IOS solve(); 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...
#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...