zoukankan      html  css  js  c++  java
  • POJ1548最小路径覆盖

    题意:
          给你一个DAG,然后问你最少多少条路径能覆盖所有需要覆盖的点。


    思路:
          最小路径覆盖,太明显了,每个点向它右下方的点连边,然后...没啥难的地方,不说了。


    #include<stdio.h>
    #include<string.h>


    #define N_node 24 * 24 + 10
    #define N_edge 24 * 24 * 24 * 24 + 100


    typedef struct
    {
        int x ,y;
    }NODE;


    typedef struct
    {
        int to ,next;
    }STAR;


    NODE node[N_node];
    STAR E[N_edge];
    int list[N_node] ,tot;
    int mkdfs[N_node] ,mkgx[N_node];


    void add(int a ,int b)
    {
        E[++tot].to = b;
        E[tot].next = list[a];
        list[a] = tot;
    }


    int DFS_XYL(int x)
    {
        for(int k = list[x] ;k ;k = E[k].next)
        {
            int to = E[k].to;
            if(mkdfs[to]) continue;
            mkdfs[to] = 1;
            if(mkgx[to] == -1 || DFS_XYL(mkgx[to]))
            {
                mkgx[to] = x;
                return 1;
            }
        }
        return 0;
    }




    int main ()
    {
        int a ,b ,i ,j, nowt ,n;
        while(~scanf("%d %d" ,&a ,&b) && a != -1)
        {
            nowt = 1;
            node[nowt].x = a;
            node[nowt].y = b;
            while(scanf("%d %d" ,&a ,&b) && a && b)
            {
                node[++nowt].x = a;
                node[nowt].y = b;
            }
            n = nowt;
            memset(list ,0 ,sizeof(list));
            tot = 1;
            for(i = 1 ;i <= n ;i ++)
            for(j = 1 ;j <= n ;j ++)
            {
                if(i == j) continue;
                if(node[i].x <= node[j].x && node[i].y <= node[j].y)
                add(i ,j);
            }
            memset(mkgx ,255 ,sizeof(mkgx));
            int Ans = 0;
            for(i = 1 ;i <= n ;i ++)
            {
                memset(mkdfs ,0 ,sizeof(mkdfs));
                Ans += DFS_XYL(i);
            }
            printf("%d " ,n - Ans);
        }
        return 0;
    }















  • 相关阅读:
    Windows 7 Update Settings Disabled (Important Updates Grayed Out)
    vSphere 扩展硬盘空间
    Windows Updateエラー 80072EE2
    how-to-view-source-of-chrome-extension
    ffmpeg 加 logo
    书法字帖 PDF转化为可打印PDF
    远程桌面 函数不受支持
    ico 图标 生成 工具 网站
    WmiPrvSe.exe 的 cpu 占用
    v891 安卓平板的root
  • 原文地址:https://www.cnblogs.com/csnd/p/12062490.html
Copyright © 2011-2022 走看看