zoukankan      html  css  js  c++  java
  • [网络流24题]最小路径覆盖问题

    最小路径覆盖模板题

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<vector>
    #define maxn 155
    #define maxm 6005
    using namespace std;
    int n,m;
    struct edge{
        int from;
        int to;
        int next;
    }E[maxm];
    int sz=0;
    int head[maxn];
    void add_edge(int u,int v){
        sz++;
        E[sz].from=u;
        E[sz].to=v;
        E[sz].next=head[u];
        head[u]=sz;
    }
    
    int vis[maxn*2];
    int match[maxn*2];
    int dfs(int x){
        for(int i=head[x];i;i=E[i].next){
            int y=E[i].to;
            if(!vis[y]){
                vis[y]=1;
                if(!match[y]||dfs(match[y])){
                    match[y]=x;
                    match[x]=y;
                    return 1;
                }
            }
        }
        return 0;
    }
    
    void print(int x){
        x+=n;
        do{
            x-=n;
            printf("%d ",x);
            vis[x]=1;
            x=match[x];
        }while(x!=0);
        printf("
    "); 
    }
    int main(){
        int x,y;
        scanf("%d %d",&n,&m);
        for(int i=1;i<=m;i++){
            scanf("%d %d",&x,&y);
            add_edge(x,y+n); 
        }
        int ans=0;
        for(int i=1;i<=n;i++){
            memset(vis,0,sizeof(vis));
            if(dfs(i)) ans++;
        }
        memset(vis,0,sizeof(vis)); 
        for(int i=1;i<=n;i++){
            if(!vis[i]){
                print(i);
            }
        }
        printf("%d
    ",n-ans);
    } 
    
  • 相关阅读:
    关于content-type请求头的说明
    RabbitMQ
    tornado
    flask总结之session,websocket,上下文管理
    爬虫相关问题总结
    爬虫之scrapy框架
    爬虫之Selenium模块
    爬虫之Beautifulsoup及xpath
    爬虫之requests
    SQLAlchemy
  • 原文地址:https://www.cnblogs.com/birchtree/p/10314605.html
Copyright © 2011-2022 走看看