Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:搬运一个网络流代码(非原创)

Posted by 20051106 at 2017-01-15 10:55:29 on Problem 3713
In Reply To:搬运一个网络流代码(非原创) Posted by:CuriousCat at 2017-01-15 08:08:38
> 性质一·任何一对顶点间==0和其他顶点间。
> 考虑0到1有三条路径A1,A2,A3,0到2有三条B1,B2,B3。
> A1+B1就是一条从1到2很好的路径。(没有重合点)
> 他们之间最多会有两条路径有相同顶点,此时只需要从重合的点开始走即可。(有)
> ---------------------------------------------------------------------------
> #include <iostream>
> #include <vector>
> #include <cstring>
> #include <algorithm>
> #include <cstdio>
> #define MAX_N 550
> #define MAX_M 50050
> 
> using namespace std;
>  
> vector<int> G[MAX_N];
> int match[MAX_N];
> bool matchdst[MAX_N], vis[MAX_N];
> 
> int dfs(int from, int to) {
> 	for (int i = G[from].size() - 1;i >= 0;--i) {
> 		int v = G[from][i];
> 		if (v == to) {
> 			if (matchdst[from]) continue;
> 			matchdst[from] = true;
> 			return true;
> 		}
> 		if (vis[v]) continue;
> 		vis[v] = true;
> 		if (dfs(match[v], to)) {
> 			match[v] = from;
> 			return true;
> 		}
> 	}
> 	return false;
> }
> 
> bool flow(int from, int to, int n) {
> 	for (int i = 0;i < n;++i) match[i] = i;
> 	memset(matchdst, 0, sizeof(matchdst));
> 	for (int i = 0;i < 3;++i) {
> 		memset(vis, 0, sizeof(vis));
> 		if (!dfs(from, to)) return false;
> 	}
> 	return true;
> }
> 
> bool solve(int n, int m) {
> 	for (int i = 1;i < n;++i) 
> 		if (!flow(0, i, n)) return false;
> 	return true;
> }
> 
> int main(int argc,char *argv[]) {
> 	int n, m;
> 	while (true) {
> 		scanf("%d%d", &n, &m);
> 		if (n == 0 && m == 0) break;
> 		for (int i = 0;i < n;++i) G[i].push_back(i);
> 		for (int i = 0, a, b;i < m;++i) {
> 			scanf("%d%d", &a, &b);
> 			G[a].push_back(b), G[b].push_back(a);
> 		}
> 		bool ans = solve(n, m);
> 		printf("%s\n", ans ? "YES" : "NO");
> 		for (int i = 0;i < n;++i) G[i].clear();
> 	}
> 	return 0;
> }

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator