Submission #286818

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
2868182020-08-31 04:14:47ChrisTTropical Garden (IOI11_garden)C++17
100 / 100
3092 ms36548 KiB
#include<bits/stdc++.h>
#include "garden.h"
#include "gardenlib.h"
using namespace std;
void count_routes(int n, int m, int p, int r[][2], int q, int g[]) {
vector<int> togo(2*n+1,-1);
for (int i = 0; i < m; i++) {
auto [a,b] = r[i];
if (!~togo[2*a]) togo[2*a] = 2*b+(!~togo[2*b]);
else if (!~togo[2*a+1]) togo[2*a+1] = 2*b+(!~togo[2*b]);
if (!~togo[2*b]) togo[2*b] = 2*a+(togo[2*a]/2==b);
else if (!~togo[2*b+1]) togo[2*b+1] = 2*a+(togo[2*a]/2==b);
}
n *= 2;
vector<vector<int>> adj(n+1);
for (int i = 0; i < n; i++) {
if (!~togo[i]) togo[i] = togo[i-1];
adj[togo[i]].push_back(i);
}
vector<int> cmp(n+1), dist(n+1), to(n+1,-1), ind(n+1); vector<vector<int>> cyc(n+1); int cc = 0;
for (int i = 0; i < n; i++) if (!cmp[i]) {
int cur = i; ++cc;
while (!cmp[cur]) {
cmp[cur] = cc, cur = togo[cur];
}
int o = cur; queue<int> qq;
do {
ind[cur] = (int)cyc[cc].size(); cyc[cc].push_back(cur); to[cur] = cur; qq.push(cur);
} while ((cur = togo[cur]) != o);
while (!qq.empty()) {
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...