又是一道二分匹配的题,不过这次开了三维数组g[i][p][q],第i门课与星期p的第q节课对应 然后就是套匈牙利算法了。。。 代码: #include<iostream> using namespace std; int g[301][8][13]; int u[8][13],link[8][13]; int n; int dfs(int t) { for(int i=1;i<=7;i++) for(int j=1;j<=12;j++) { if(g[t][i][j]&&!u[i][j]) { u[i][j]=1; if(link[i][j]==-1||dfs(link[i][j])) { link[i][j]=t; return 1; } } } return 0; } int hungary() { int i,num=0; memset(link,-1,sizeof(link)); for(i=1;i<=n;i++) { memset(u,0,sizeof(u)); if(dfs(i)) num++; } return num; } int main() { int i,p,q,t,a,b; while(scanf("%d",&n)!=EOF) { memset(g,0,sizeof(g)); for(i=1;i<=n;i++) { scanf("%d",&t); while(t--) { scanf("%d%d",&a,&b); g[i][a][b]=1; } } printf("%d/n",hungary()); } return 0; }