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

为什么dinic 就会错 好心人看一下吧,或者提供些数据,这个是我第一次做网络流,千万不要弄的像泰坦尼克一样。多谢!

Posted by philipfry at 2008-07-23 17:17:19 on Problem 1273
#include <iostream>
using namespace std;
#define MAX 201
int n,m,flow;
int c[MAX][MAX],lc[MAX][MAX],mark[MAX];//mark[]用来记录层次 lc[][]是处于相邻层次结点所在的边,c[][]就是初始图
int next[MAX];//在dfs中用来记录路径的,next顾名思义
int mini,miniold;//min是记录当前增广路中目前最小的流,miniold是当本次搜索失败后,给还原使用

int bfs(){
	int head=0,tail=1,seq[MAX];
	int i;
	memset(lc,0,sizeof(lc));
	memset(seq,0,sizeof(seq));
	memset(mark,255,sizeof(mark));//m[] set to -1
	seq[1]=1;
	mark[1]=1;
	while(head<tail){
		head++;
		for(i=1;i<=m;i++)
			if(c[seq[head]][i]>0)
				if(mark[i]==-1 || mark[i]==mark[seq[head]]+1){
					if(mark[i]==-1){tail++; seq[tail]=i;}
					mark[i]=mark[seq[head]]+1; lc[seq[head]][i]=c[seq[head]][i];
				}
	}
	return 0;
}

int dfs(int start,int end){
	if(start==0) return 0;
	int i;
	if(start==end){
		for(i=1;i!=m;i=next[i]){
			lc[i][next[i]]-=mini;
			lc[next[i]][i]+=mini;
			c[i][next[i]]-=mini;
			c[next[i]][i]+=mini;
		}
		flow+=mini;
		mini=2000000000;
		return 1;
	}
	for(i=1;i<=m;i++)
		if(mark[i]==mark[start]+1 && lc[start][i]>0){
			next[start]=i;
			miniold=mini;
			if(mini>lc[start][i]) mini=lc[start][i];
			if(dfs(i,end)) return 1;
			mini=miniold;
			next[start]=0;
		}
	return 0;
}


int main(){
	//freopen("ditch.in","r",stdin);
	//freopen("ditch.out","w",stdout);
	int i,j,k,temp;
	while(1){
		memset(c,0,sizeof(c));
		if(cin>>n>>m){
			flow=0;
			for(i=1;i<=n;i++){
				cin>>j>>k>>temp;
				c[j][k]+=temp;
			}
			while(1){
				bfs(); 
				if(mark[m]==-1) break;
				mini=2000000000;
				memset(next,0,sizeof(next));
				i=1;
				while(dfs(i,m)){
					for(i=1;lc[i][next[i]]>0;i++){}
					i--;
				}
			}
			cout<<flow<<endl;
		}
		else break;
	}
	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