• 试题库问题


    弱弱的我不会网络流,发现这道题二分图也能水过,直接匈牙利不比Dinic好写一些吗???

    #include<bits/stdc++.h>
    using namespace std;
    int n,k,need[25],vis[1005],match[1005],ans;
    vector<int>a[25],c[25];
    int dfs(int col){
        //printf("%d
    ",col);
        for(int i=0;i<a[col].size();i++)
            if(!vis[a[col][i]]){
                int t=a[col][i];
                vis[t]=1;
                if(!match[t]||dfs(match[t])){
                    match[t]=col;
                    return 1;
                }
            }
        return 0;
    }
    int main(){
        cin>>k>>n;
        for(int i=1;i<=k;i++)
            scanf("%d",&need[i]);
        for(int i=1;i<=n;i++){
            int p,q;
            scanf("%d",&p);
            for(int j=1;j<=p;j++){
                scanf("%d",&q);
                a[q].push_back(i);
            }
        }
        for(int i=1;i<=k;i++){
            for(int j=1;j<=need[i];j++){
                memset(vis,0,sizeof(vis));
                ans+=dfs(i);
            }
        }
        for(int i=1;i<=k;i++)
            ans-=need[i];
        if(ans!=0){
            puts("No Solution!");
            return 0;
        }
        for(int i=1;i<=n;i++)
            c[match[i]].push_back(i);
        for(int i=1;i<=k;i++){
            printf("%d: ",i);
            for(int j=0;j<c[i].size();j++)
                printf("%d ",c[i][j]);
            puts("");
        }
        return 0;
    }

    深深地感到自己的弱小。

  • 相关阅读:
    7-25 念数字
    7-24 约分最简分式
    7-23 币值转换
    HDU-1102-Constructing Roads
    HDU-1301-Jungle Roads
    链式向前星
    HDU-1217-Arbitrage(SPFA)
    POJ-1258-Agri-Net
    HDU-1863-畅通工程
    POJ-3050-Hoscotch
  • 原文地址:https://www.cnblogs.com/syzf2222/p/12349266.html
Copyright © 2020-2023  润新知