Lang:G++
Edit12345678910111213141516171819202122232425262728293031#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;