제출 #1261602

#제출 시각아이디문제언어결과실행 시간메모리
1261602Bui_Quoc_CuongCollapse (JOI18_collapse)C++20
0 / 100
24 ms3524 KiB
#include <bits/stdc++.h> // #include "collapse.h" using namespace std; #define FOR(i, a, b) for(int i = a; i <= (int)b; i++) #define FORD(i, a, b) for(int i = a; i >= (int)b; i--) #define all(a) a.begin(), a.end() #define pb push_back #define fi first #define se second const int maxN = 1e5 + 5; int n, m, q; array <int, 3> edges[maxN]; array <int, 2> Q[maxN]; void init() { cin >> n >> m >> q; FOR(i, 1, m) { cin >> edges[i][0] >> edges[i][1] >> edges[i][2]; if (edges[i][1] > edges[i][2]) swap(edges[i][1], edges[i][2]); } FOR(i, 1, q) { cin >> Q[i][0] >> Q[i][1]; } } namespace sub1 { bool checksub() { return max(n, q) <= 5000; } set <int> G[5005]; bool vis[5005]; void dfs(int u, int p) { if (vis[u]) return; vis[u] = 1; for(auto v : G[u]) if (v != p) { dfs(v, u); } } vector <int> solve() { vector <int> res; set <pair <int, int>> edge_query; FOR(_q, 1, q) { edge_query.clear(); FOR(i, 1, n) G[i].clear(); int ssc = 0; FOR(i, 1, Q[_q][0] + 1) { if (edges[i][0] == 1) { int u = edges[i][1], v = edges[i][2]; if (u <= Q[_q][1] && v >= Q[_q][1] + 1) continue; G[u].erase(v); G[v].erase(u); } else { int u = edges[i][1], v = edges[i][2]; if (u <= Q[_q][1] && v >= Q[_q][1] + 1) continue; G[u].insert(v); G[v].insert(u); } } FOR(i, 1, n) vis[i] = 0; FOR(i, 1, n) if (!vis[i]) { ssc++; dfs(i, i); } res.push_back(ssc); } return res; } } vector <int> simulateCollapse(int N, vector<int> T, vector<int> X, vector<int> Y, vector<int> W, vector<int> P) { n = N; m = X.size(); q = W.size(); FOR(i, 0, m - 1) { edges[i + 1][0] = T[i]; edges[i + 1][1] = X[i]; edges[i + 1][2] = Y[i]; if (edges[i + 1][1] > edges[i + 1][2]) swap(edges[i + 1][1], edges[i + 1][2]); } for (int i = 0; i < q; i++) { Q[i + 1][0] = W[i]; Q[i + 1][1] = P[i]; } vector <int> res = sub1::solve(); return res; } void process() { vector <int> res; if(sub1::checksub()) res = sub1::solve(); for (int &val : res) cout << val << " "; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...