Two more judgment conditions are provided;
# Include <stdio. h>
# Include <string. h>
# Define INF 99999999
Int map [202] [202];
Int SX [202], Sy [202];
Int lx [202], Ly [202];
Int n, m, A, link [202];
Int WWW = 300005;
Int find (int K)
{
Int I;
SX [k] = 1;
For (I = 1; I <= N; I ++)
{
If (SY [I] = 0 & lx [k] + ly [I] = map [k] [I])
{
Sy [I] = 1;
If (link [I] =-1 | find (link [I])
{
Link [I] = K;
Return 1;
}
}
}
Return 0;
}
Int km ()
{
Int I, J, K, sum = 0;
Memset (LX, 0, sizeof (LX ));
Memset (ly, 0, sizeof (ly ));
For (I = 1; I <= N; I ++)
For (j = 1; j <= N; j ++)
If (LX [I] <map [I] [J])
Lx [I] = map [I] [J];
For (I = 1; I <= N; I ++)
{
While (1)
{
Memset (sx, 0, sizeof (SX ));
Memset (SY, 0, sizeof (SY ));
If (find (I ))
Break;
A = inf;
For (j = 1; j <= N; j ++)
{
If (SX [J])
{
For (k = 1; k <= N; k ++)
If (! Sy [k])
{
If (A> lx [J] + ly [k]-map [J] [k])
A = Lx [J] + ly [k]-map [J] [k];
}
}
}
If (A = inf)
Return 1;
For (j = 1; j <= N; j ++)
{
If (SX [J])
Lx [J]-=;
If (SY [J])
Ly [J] + =;
}
}
}
For (I = 1; I <= N; I ++)
{
If (Map [LINK [I] [I] =-INF)
Return 1;
Sum + = map [LINK [I] [I];
}
Return sum;
}
Int main ()
{
Int I, j, A, B, C;
While (scanf ("% d", & N, & M )! = EOF)
{
Memset (link,-1, sizeof (Link ));
For (I = 1; I <= N; I ++)
For (j = 1; j <= N; j ++)
Map [I] [J] =-INF;
For (I = 0; I <m; I ++)
{
Scanf ("% d", & A, & B, & C );
If (-C> map [a] [B])
Map [a] [B] =-C;
}
Printf ("% d \ n",-km ());
}
Return 0;
}