Submission #891399

#TimeUsernameProblemLanguageResultExecution timeMemory
891399boris_mihovAirline Route Map (JOI18_airline)C++17
0 / 100
398 ms52936 KiB
#include "Alicelib.h" #include <iostream> #include <numeric> #include <cassert> #include <vector> typedef long long llong; const int MAXN = 1000 + 10; const int INF = 1e9; std::vector <std::pair <int,int>> newG; void Alice (int N, int M, int A[], int B[] ) { for (int i = 0 ; i < M ; ++i) { newG.push_back({A[i], B[i]}); } if (N <= 2) { InitG(N, newG.size()); for (int i = 0 ; i < newG.size() ; ++i) { MakeG(i, newG[i].first, newG[i].second); } return; } int log = 10; for (int i = 0 ; i < N ; ++i) { for (int bit = 0 ; bit < log ; ++bit) { if (i & (1 << bit)) { newG.push_back({i, N + bit}); } } } for (int bit = 0 ; bit < log ; ++bit) { newG.push_back({N + log, N + bit}); } for (int bit = 0 ; bit + 1 < log ; ++bit) { newG.push_back({N + bit, N + bit + 1}); } newG.push_back({N + log + 1, N}); for (int i = 0 ; i < N + log ; ++i) { newG.push_back({N + log + 2, i}); } InitG(N + log + 3, newG.size()); for (int i = 0 ; i < newG.size() ; ++i) { MakeG(i, newG[i].first, newG[i].second); } return; }
#include "Boblib.h" #include <iostream> #include <numeric> #include <cassert> #include <vector> typedef long long llong; const int MAXN = 1012 + 10; const int INF = 1e9; int number[MAXN]; bool inReal[MAXN]; bool connected[MAXN][MAXN]; std::vector <std::pair <int,int>> edges; std::vector <int> g[MAXN]; std::vector <int> logs; int realLog[MAXN]; bool isLog[MAXN]; int deg[MAXN]; void dfs(int node, int par) { logs.push_back(node); for (const int &u : g[node]) { if (u == par) { continue; } if (isLog[u]) { dfs(u, node); } } } void Bob( int V, int U, int C[], int D[] ) { if (V <= 2) { if (U == 0) { InitMap(V, 0); } else { InitMap(V, 1); MakeMap(0, 1); } return; } for (int i = 0 ; i < U ; ++i) { g[C[i]].push_back(D[i]); g[D[i]].push_back(C[i]); deg[C[i]]++; deg[D[i]]++; connected[C[i]][D[i]] = true; connected[D[i]][C[i]] = true; } for (int i = 0 ; i < U ; ++i) { inReal[i] = true; } int log = 10; int n = V - log - 3; int root = -1; for (int i = 0 ; i < V ; ++i) { if (deg[i] == V - 3) { root = i; } } assert(root != -1); int source = -1; int pointing = -1; for (int i = 0 ; i < V ; ++i) { if (i != root && !connected[i][root] && deg[i] == 1) { pointing = i; } if (i != root && !connected[i][root] && deg[i] == log) { source = i; } } assert(source != -1); assert(pointing != -1); for (const int &u : g[source]) { isLog[u] = true; } dfs(g[pointing][0], 0); // assert(logs.size() == log); for (int i = 0 ; i < log ; ++i) { inReal[logs[i]] = false; realLog[logs[i]] = i; } inReal[root] = false; inReal[source] = false; inReal[pointing] = false; for (int i = 0 ; i < V ; ++i) { if (!inReal[i]) { continue; } for (int j = 0 ; j < log ; ++j) { if (connected[i][logs[j]]) { number[i] |= (1 << j); } } } for (int i = 0 ; i < V ; ++i) { for (int j = i + 1 ; j < V ; ++j) { if (!inReal[i] || !inReal[j] || !connected[i][j]) { continue; } edges.push_back({number[i], number[j]}); } } InitMap(n, edges.size()); for (int i = 0 ; i < edges.size() ; ++i) { MakeMap(edges[i].first, edges[i].second); } return; }

Compilation message (stderr)

Alice.cpp: In function 'void Alice(int, int, int*, int*)':
Alice.cpp:23:28: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |         for (int i = 0 ; i < newG.size() ; ++i)
      |                          ~~^~~~~~~~~~~~~
Alice.cpp:60:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |     for (int i = 0 ; i < newG.size() ; ++i)
      |                      ~~^~~~~~~~~~~~~

Bob.cpp: In function 'void Bob(int, int, int*, int*)':
Bob.cpp:146:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  146 |     for (int i = 0 ; i < edges.size() ; ++i)
      |                      ~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...