zoukankan      html  css  js  c++  java
  • hdu 1845

    一看题意就是二分匹配问题,建边是双向的,两个集合都是n个点

    这题的图很特殊,每个点都要与三个点相连,在纸上画了六个点的图就感觉此图最大匹配肯定是六,除以2就是原图的匹配了,就感觉这样的图肯定会达到满匹配

    一看数据5000个点,就用链表写了,还是超时,本来想在网上找份解题报告,看一下怎么优化的,却搜不到

    就用自己的猜想,直接输出n/2,结果A了,得意,这尼玛什么题啊,,,






    #include<stdio.h>
    int main()
    {
        int t,n,i,a,b;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            for(i=1;i<=n/2*3;i++)
                scanf("%d%d",&a,&b);
            printf("%d
    ",n/2);
        }
        return 0;
    }
    



    /*
    #include<stdio.h>
    #include<string.h>
    #define N 5001
    int n,map[N][N],match[N],vis[N];
    struct edge
    {
        int ed;
        edge *next;
    }*E[N];
    void addedge(int x,int y)
    {
        edge *p=new edge;
        p->ed=y;
        p->next=E[x];
        E[x]=p;
    }
    int find(int x)
    {
        int i;
        for(edge *p=E[x];p;p=p->next)
        {
            i=p->ed;
            if(vis[i]==0)
            {
                vis[i]=1;
                if(match[i]==-1||find(match[i])==1)
                {
                    match[i]=x;
                    return 1;
                }
            }
        }
        return 0;
    }
    int main()
    {
        int i,t,sum,x,y;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            memset(E,NULL,sizeof(E));
            for(i=1;i<=n/2*3;i++)
            {
                      scanf("%d%d",&x,&y);
                        addedge(x,y);
                        addedge(y,x);
            }
                memset(match,-1,sizeof(match));
                sum=0;
                for(i=1;i<=n;i++)
                {
                    memset(vis,0,sizeof(vis));
                    sum+=find(i);
                }
                printf("%d
    ",sum/2);
        }
        return 0;
    }
    */



  • 相关阅读:
    旅行锦囊
    生活智慧
    育儿锦囊
    新婚置办
    软件开发心得
    64位sql server2005安装
    Struts学习心得
    Spring学习心得
    Oracle补习班第十天
    Python----文件操作
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3212503.html
Copyright © 2011-2022 走看看