hdu 4975 A simple Gaussian elimination problem. 2014多校十 网络流

题目链接:hdu 4975

        和hdu 4888很类似,只不过这里的上限都是9,且不需要输出唯一的矩阵

        只不过这道题会卡找环的过程。调整行列之间的流量可以优化,不难发现行列之间的流量可以是该行和,该列和,以及9的最小值,这样调整了之后就能使得找环省去无用的操作。

/******************************************************
 * File Name:   4975.cpp
 * Author:      kojimai
 * Creater Time:2014年08月21日 星期四 20时06分03秒
******************************************************/
#include
#include
#include
#include
#include
#include
using namespace std;
#define FFF 505
int row[FFF],col[FFF],n,m;
struct node
{
	int u,v,f,next;
}p[510010];
int first[FFF*2],e,cur[FFF*2],dis[FFF*2],que[FFF*4];
bool bfs(int s,int t)//找增广路径
{
	memset(dis,-1,sizeof(dis));
	dis[s]=0;
	queue q;
	q.push(s);
	while(!q.empty())
	{
		int now=q.front();q.pop();
		for(int k=first[now];~k;k=p[k].next)
		{
			if(p[k].f>0&&dis[p[k].v]==-1)
			{
				dis[p[k].v]=dis[now]+1;
				if(p[k].v==t)
					return true;
				q.push(p[k].v);
			}
		}
	}
	return false;
}

int dinic(int s,int t)//dinic求最大流
{
	//cout<<"s="<9*m)
				flag=false;
			allr+=row[i];
		}
		for(int i=1;i<=m;i++)
		{
			scanf("%d",&col[i]);
			if(col[i]<0||col[i]>9*n)
				flag=false;
			allc+=col[i];
		}
		printf("Case #%d: ",Cas++);
		//cout<<"flag="<

你可能感兴趣的:(网络流)