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

Can you tell me what is wrong?

Posted by beingryu at 2006-06-04 15:44:17 on Problem 1273
I tried all of the datas in USACO training, and passed all of them.

Nevertheless, I got WA for so many times...

Here's my code: (search using DFS, because BFS(Dijkstra) is troublesome-)

#include <stdio.h>
#include <memory.h>
#define _min(a,b) (((a)<(b))?(a):(b))

int from[401];
__int64 matrix[401][401];
int N;

__int64 ans;

void i_stream()
{
	int edgeN;
	scanf("%d %d", &edgeN, &N);
	int i;
	int st, ed;
	int val;
	for (i = 0;i < edgeN;i++)
	{
		scanf("%d %d", &st, &ed);
		scanf("%d", &val);
		matrix[st - 1][ed - 1] += val;
	}
}

__int64 fill(int pl, __int64 val)
{
	if (pl == N - 1)
	{
		return val;
	}

	int i;
	__int64 fval;
	for (i = 0;i < N;i++)
	{
		if (from[i] != -1)
			continue;
		if (matrix[pl][i] == 0)
			continue;
		from[i] = pl;
		fval = fill(i, _min(val, matrix[pl][i]));
		if (fval == 0)
			continue;
		matrix[i][pl] += fval;
		matrix[pl][i] -= fval;
		return fval;
	}

	return 0;
}

void process()
{
	__int64 val;
	for (;;)
	{
		memset(from, 0xFF, sizeof(from));

		from[0] = -2;

		if ((val = fill(0, 0x3FFFFFFF)) == 0)
			break;

		ans += val;
	}
}

void o_stream()
{
	printf("%I64d\n", ans);
}

int main()
{
	i_stream();
	process();
	o_stream();

	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