Submission #1794802
Source Code Expand
#include<bits/stdc++.h> using namespace std; using vi = vector< int >; using vii = vector< vi >; struct Bipartite_Matching { vector< set< int > > graph; vector< int > match, alive, used; int timestamp; Bipartite_Matching(int n) { timestamp = 0; graph.resize(n); alive.assign(n, 1); used.assign(n, 0); match.assign(n, -1); } /* void add_edge(int u, int v) { graph[u].push_back(v); graph[v].push_back(u); } */ bool dfs(int v) { used[v] = timestamp; for(int u : graph[v]) { int w = match[u]; if(alive[u] == 0) continue; if(w == -1 || (used[w] != timestamp && dfs(w))) { match[v] = u; match[u] = v; return (true); } } return (false); } int bipartite_matching() { int ret = 0; for(int i = 0; i < graph.size(); i++) { if(alive[i] == 0) continue; if(match[i] == -1) { ++timestamp; ret += dfs(i); } } return (ret); } }; int main() { int N; cin >> N; vector< vii > v(26, vii(N)); for(int i = 0; i < N; i++) { string s; cin >> s; for(int j = 0; j < s.size(); j++) { v[s[j] - 'a'][i].push_back(j); } } for(int i = 0; i < 26; i++) { const int P = 100000; Bipartite_Matching flow(P + N); vector< int > ev[100000]; for(int j = 0; j < N; j++) { for(int k : v[i][j]) { ev[k].emplace_back(j); } } int k = 0; int f = 0; for(int j = 0; j < P; j++) { while(k < P && k - j < N) { for(auto &addidx : ev[k]) { flow.graph[addidx + P].emplace(k); flow.graph[k].emplace(addidx + P); if(flow.match[k] == -1) { ++flow.timestamp; f += flow.dfs(k); } if(flow.match[addidx + P] == -1) { ++flow.timestamp; f += flow.dfs(addidx + P); } } ++k; } if(f == N) { cout << "YES" << endl; return (0); } for(auto &delidx : ev[j]) { bool update = false; if(flow.match[delidx + P] == j) { flow.match[delidx + P] = flow.match[j] = -1; flow.graph[delidx + P].erase(j); --f; update = true; } flow.graph[j].erase(delidx + P); flow.graph[delidx + P].erase(j); if(update) { ++flow.timestamp; f += flow.dfs(k); ++flow.timestamp; f += flow.dfs(delidx + P); } } } } cout << "NO" << endl; }
Submission Info
Submission Time | |
---|---|
Task | B - コメント |
User | ei13333 |
Language | C++14 (GCC 5.4.1) |
Score | 90 |
Code Size | 2664 Byte |
Status | AC |
Exec Time | 520 ms |
Memory | 12092 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 30 / 30 | 60 / 60 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt |
Subtask1 | sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt |
Subtask2 | sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 9 ms | 8472 KB |
sample_02.txt | AC | 41 ms | 8472 KB |
subtask1_01.txt | AC | 41 ms | 8472 KB |
subtask1_02.txt | AC | 43 ms | 8576 KB |
subtask1_03.txt | AC | 42 ms | 8596 KB |
subtask1_04.txt | AC | 42 ms | 8576 KB |
subtask1_05.txt | AC | 32 ms | 8724 KB |
subtask1_06.txt | AC | 42 ms | 8596 KB |
subtask1_07.txt | AC | 6 ms | 8576 KB |
subtask1_08.txt | AC | 42 ms | 8576 KB |
subtask1_09.txt | AC | 5 ms | 8576 KB |
subtask1_10.txt | AC | 42 ms | 8576 KB |
subtask1_11.txt | AC | 42 ms | 8596 KB |
subtask1_12.txt | AC | 41 ms | 8596 KB |
subtask1_13.txt | AC | 16 ms | 8576 KB |
subtask1_14.txt | AC | 41 ms | 8472 KB |
subtask1_15.txt | AC | 17 ms | 8472 KB |
subtask1_16.txt | AC | 42 ms | 8576 KB |
subtask2_01.txt | AC | 18 ms | 9216 KB |
subtask2_02.txt | AC | 257 ms | 9232 KB |
subtask2_03.txt | AC | 130 ms | 10384 KB |
subtask2_04.txt | AC | 84 ms | 9232 KB |
subtask2_05.txt | AC | 34 ms | 9728 KB |
subtask2_06.txt | AC | 68 ms | 12092 KB |
subtask2_07.txt | AC | 14 ms | 12024 KB |
subtask2_08.txt | AC | 16 ms | 9216 KB |
subtask2_09.txt | AC | 256 ms | 9232 KB |
subtask2_10.txt | AC | 59 ms | 8976 KB |
subtask2_11.txt | AC | 229 ms | 9232 KB |
subtask2_12.txt | AC | 74 ms | 9232 KB |
subtask2_13.txt | AC | 25 ms | 9232 KB |
subtask2_14.txt | AC | 258 ms | 9360 KB |
subtask2_15.txt | AC | 44 ms | 9232 KB |
subtask2_16.txt | AC | 105 ms | 9236 KB |
subtask2_17.txt | AC | 75 ms | 9108 KB |
subtask2_18.txt | AC | 102 ms | 9236 KB |
subtask2_19.txt | AC | 89 ms | 9216 KB |
subtask2_20.txt | AC | 72 ms | 9360 KB |
subtask2_21.txt | AC | 70 ms | 9344 KB |
subtask2_22.txt | AC | 70 ms | 9344 KB |
subtask2_23.txt | AC | 41 ms | 9360 KB |
subtask2_24.txt | AC | 84 ms | 9484 KB |
subtask2_25.txt | AC | 69 ms | 9344 KB |
subtask2_26.txt | AC | 75 ms | 9484 KB |
subtask2_27.txt | AC | 520 ms | 9484 KB |
subtask2_28.txt | AC | 514 ms | 9484 KB |