Submission #374531
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e+9;
const int MAX_V = 100010;
struct edge {
int to, cap, rev;
edge(int t, int c, int r) : to(t), cap(c), rev(r){}
};
int V;
vector<edge> G[MAX_V];
int level[MAX_V];
int iter[MAX_V];
void bfs(int s) {
memset(level, -1, sizeof(level));
queue<int> que;
level[s] = 0;
que.push(s);
while(!que.empty()){
int v = que.front();
que.pop();
for(int i = 0; i < G[v].size(); ++i){
edge &e = G[v][i];
if(e.cap > 0 && level[e.to] < 0){
level[e.to] = level[v] + 1;
que.push(e.to);
}
}
}
}
int dfs(int v, int t, int f){
if(v == t)
return f;
for(int &i = iter[v]; i < G[v].size(); ++i){
edge &e = G[v][i];
if(e.cap > 0 && level[v] < level[e.to]){
int d = dfs(e.to, t, min(f, e.cap));
if(d > 0){
e.cap -= d;
G[e.to][e.rev].cap += d;
return d;
}
}
}
return 0;
}
int max_flow(int s, int t){
int flow = 0;
for(;;){
bfs(s);
if(level[t] < 0)
return flow;
memset(iter, 0, sizeof(iter));
int f;
while((f = dfs(s, t, INF)) > 0)
flow += f;
}
}
int V1;
vector<int> G1[MAX_V];
int match[MAX_V];
bool used[MAX_V];
bool dfs(int v){
used[v] = true;
for(int i = 0; i < G1[v].size(); ++i){
int u = G1[v][i], w = match[u];
if(w < 0 || !used[w] && dfs(w)){
match[v] = u;
match[u] = v;
return true;
}
}
return false;
}
int bipartite_matching(){
int res = 0;
memset(match, -1, sizeof(match));
for(int v = 0; v < V; ++v){
if(match[v] < 0){
memset(used, 0, sizeof(used));
if(dfs(v)){
res++;
}
}
}
return res;
}
int main() {
int a, b;
cin >> V;
for(int i = 0; i < V; ++i){
scanf("%d%d", &a, &b);
G[a].push_back(edge(b, 1, G[b].size()));
G[b].push_back(edge(a, 1, G[a].size()));
G1[a].push_back(b);
G1[b].push_back(a);
}
for(int i = 1; i <= V; ++i){
G1[0].push_back(i);
//G[i].push_back(edge(V + 1, 0, G[V + 1].size()));
}
//V += 2;
cout << max_flow(1, V) << " ";
V += 1;
cout << bipartite_matching() << endl;
return 0;
}
Submission Info
Submission Time
2015-03-29 17:57:16+0900
Task
C - 最小カットと最大カット
User
probako
Language
C++11 (GCC 4.9.2)
Score
0
Code Size
2123 Byte
Status
WA
Exec Time
774 ms
Memory
17820 KiB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:102:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &a, &b);
^
Judge Result
Set Name
All
Score / Max Score
0 / 100
Status
Set Name
Test Cases
All
scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt, scrambled_28.txt
Case Name
Status
Exec Time
Memory
scrambled_00.txt
AC
35 ms
6696 KiB
scrambled_01.txt
WA
36 ms
6692 KiB
scrambled_02.txt
WA
35 ms
6688 KiB
scrambled_03.txt
RE
772 ms
17820 KiB
scrambled_04.txt
RE
774 ms
17192 KiB
scrambled_05.txt
RE
581 ms
13600 KiB
scrambled_06.txt
RE
466 ms
11684 KiB
scrambled_07.txt
RE
768 ms
17180 KiB
scrambled_08.txt
RE
439 ms
10148 KiB
scrambled_09.txt
RE
464 ms
11688 KiB
scrambled_10.txt
WA
713 ms
15388 KiB
scrambled_11.txt
WA
297 ms
10072 KiB
scrambled_12.txt
WA
573 ms
13780 KiB
scrambled_13.txt
WA
534 ms
13400 KiB
scrambled_14.txt
WA
595 ms
15132 KiB
scrambled_15.txt
WA
413 ms
12704 KiB
scrambled_16.txt
WA
215 ms
9888 KiB
scrambled_17.txt
RE
500 ms
9896 KiB
scrambled_18.txt
WA
490 ms
14740 KiB
scrambled_19.txt
RE
335 ms
7456 KiB
scrambled_20.txt
RE
599 ms
11684 KiB
scrambled_21.txt
RE
456 ms
9752 KiB
scrambled_22.txt
RE
631 ms
12248 KiB
scrambled_23.txt
WA
234 ms
10148 KiB
scrambled_24.txt
RE
465 ms
9888 KiB
scrambled_25.txt
WA
276 ms
10780 KiB
scrambled_26.txt
WA
223 ms
10020 KiB
scrambled_27.txt
WA
345 ms
11676 KiB
scrambled_28.txt
RE
537 ms
11284 KiB