hiho week 118 register

Ended

Participants:1068

Verdict:Accepted
Score:100 / 100
Submitted:2016-10-02 16:14:32

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <limits.h>
using namespace std;
struct Edge {
  int to;
  int cap;
  int idx;
  Edge(int _to, int _cap, int _idx): to(_to), cap(_cap), idx(_idx) {}
};
vector<vector<Edge> > g;
vector<bool> vis;
int N, M;
int s, t;
void addEdge(int u, int v) {
    g[u].push_back(Edge(v, 1, g[v].size()));
    g[v].push_back(Edge(u, 0, g[u].size()-1));
}
int dfs(int u, int mc = INT_MAX) {
  vis[u] = true;
  if (u == t) return mc;
  for (int i = 0; i < g[u].size(); ++i) {
    Edge& e = g[u][i];
    if (!vis[e.to] && e.cap > 0) {
      int f = dfs(e.to, min(mc, e.cap));
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX