noip2006普及组pascal试题解答

来源:百度知道 编辑:UC知道 时间:2024/05/31 06:04:19

#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("machine.in");
ofstream fout("machine.out");
const int maxn = 100+5;
int n, m, g[maxn][maxn];
int link[maxn], used[maxn];

int path(int i)
{
if (used[i]) return 0;
used[i] = 1;
int j;
for (j = 1; j <= m; j++) if (g[i][j])
if (!link[j] || path(link[j]))
{
link[j] = i;
return 1;
}
return 0;
}

main()
{
int i, j, k;
fin >> n >> m >> k;
memset(g, 0, sizeof(g));
for (i = 0; i < k; i++)
{
int temp, x, y;
fin >> temp >> x >> y;
if (x && y) g[x][y] = 1;
}

memset(link, 0, sizeof(link));
memset(used, 0, sizeof(used));

for (i = 1; i <= n;