제출 #1184774

#제출 시각아이디문제언어결과실행 시간메모리
1184774Ahmed_Kaaniche항공 노선도 (JOI18_airline)C++17
37 / 100
44 ms11152 KiB
#include "Alicelib.h" #include <cassert> #include <cstdio> #include <bits/stdc++.h> using namespace std; void Alice(int N, int M, int A[], int B[]) { int cnt = 0; InitG(2 * N + 3, M + ((N * (N + 3) / 2) + 2)); //0 -> N-1 for (int i = 0; i < M; i++) { MakeG(cnt++, A[i], B[i]); } //N -> 2*N-1 for (int i = N, tmp = 0; i < 2 * N; tmp++, i++) { MakeG(cnt++, i, 2 * N); for (int j = 0; j <= tmp; j++) { MakeG(cnt++, i, j); } } //2*N MakeG(cnt++, 2 * N, 2 * N + 1); MakeG(cnt++, 2 * N, 2 * N + 2); }
#include "Boblib.h" #include <cassert> #include <cstdio> #include <bits/stdc++.h> using namespace std; void Bob(int V, int U, int C[], int D[]) { int n = (V - 3) / 2; int m = U - (n * (n + 3) / 2) - 2; int spc = -1; vector<set<int>> adj(V); vector<bool> used(V, false); vector<int> occ(V, 0); map<int, int> mp; InitMap(n, m); //adj for (int i = 0; i < U; i++) { adj[C[i]].insert(D[i]); adj[D[i]].insert(C[i]); occ[C[i]]++; occ[D[i]]++; } //spc (2*N) for (int i = 0; i < V; ++i) { int cnt = 0; for (auto &elt: adj[i]) { if (occ[elt] == 1) cnt++; } if (cnt == 2) { spc = i; used[i] = true; } } //N -> 2*N-1 for (int sz = 2; sz <= n + 1; ++sz) { for (int i = 0; i < V; ++i) { if (adj[i].count(spc) && adj[i].size() == sz) { int x = -1; for (auto &elt: adj[i]) { if (!used[elt]) x = elt; } mp[x] = sz - 2; used[x] = true; } } } //ans for (int i = 0; i < U; i++) { if (mp.count(C[i]) && mp.count(D[i])) { MakeMap(mp[C[i]], mp[D[i]]); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...