hiho week 115 register

Ended

Participants:333

Verdict:Accepted
Score:100 / 100
Submitted:2016-09-11 14:08:42

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 <cstdio>
#include <cstring>
int G[505][505];
size_t path[505];
int capacity[505];
size_t queue[505];
bool visited[505];
size_t N, M;
int findaugmentpath(){
    memset(path, 0, sizeof(path));
    memset(capacity, 0, sizeof(capacity));
    memset(queue, 0, sizeof(queue));
    memset(visited, 0, sizeof(visited));
    
    queue[1]=1;
    size_t i=1, t=1;
    capacity[1]=1000;
    while(i<=N){
        size_t u = queue[i];
        for(size_t v=1; v<=N; v++) if(G[u][v] && v!=u && !visited[v]){
            visited[v]=true;
            queue[++t]=v;
            path[v]=u;
            capacity[v]=G[u][v] > capacity[u] ? capacity[u] : G[u][v];
            if(v==N) return capacity[v];
        }
        i++;
    }
    return 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX