#include<cstdio> using namespace std; int n, m; int a[100], b[100]; int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; ++i) a[i] = b[i] = 0; for (int i = 1; i <= m; ++i) { int x, y; scanf("%d%d", &x, &y); if (a[x] < y && b[y] < x) { if (a[x] > 0) b[a[x]] = 0; if (b[y] > 0) a[b[y]] = 0; a[x] = y; b[y] = x; } } int ans = 0; for (int i = 1; i <= n; ++i) { if (a[i] == 0) ++ans; if (b[i] == 0) ++ans; } printf("%d", ans); return 0; }
时间: 2024-04-10 07:31:54 浏览: 58
C代码教程1显示#include <stdio.
这段代码实现了一种任务分配的算法。代码中定义了两个数组a和b,分别表示任务和人员的对应关系。通过输入n和m,其中n表示任务的数量,m表示人员的数量。
接下来,代码通过循环读取m行输入,每行输入两个数x和y,表示第x个任务被分配给第y个人。在分配任务的过程中,会进行一些判断:
- 如果任务x还没有被分配给任何人,并且人员y没有被分配到任何任务,那么将任务x分配给人员y,并将人员y分配给任务x。
- 如果任务x已经被分配给了人员y1,并且人员y2被分配到了任务y,那么先取消人员y1和任务y的对应关系,再将任务x分配给人员y,并将人员y分配给任务x。
最后,通过遍历任务数组a和人员数组b,计算出没有被分配的任务和没有被分配到任务的人员的数量,并将其累加到变量ans中。最后输出ans的值。
这段代码的功能是计算没有被分配的任务和没有被分配到任务的人员的数量。
阅读全文