| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
there are multiple test cases in the input.In Reply To:Can you tell me what is wrong? Posted by:beingryu at 2006-06-04 15:44:17 > 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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator