2 条题解

  • 0
    @ 2025-10-8 16:57:18
    #include<bits/stdc++.h>
    using namespace std;
    const int N=210;
    int n,m,tsp,match[N],v[N],g[N][N];
    bool dfs(int x)
    {
        for(int y=1;y<=n;y++)if(g[x][y]&&v[y]!=tsp)
        {
            v[y]=tsp;
            if(!match[y]||dfs(match[y]))
            {
                match[y]=x;
                return 1;
            }
        }
        return 0;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1,x,y;i<=m;i++)
        {
            scanf("%d%d",&x,&y);
            g[x][y]=1;
        }
        for(int k=1;k<=n;k++) 
    		for(int i=1;i<=n;i++)
            	for(int j=1;j<=n;j++)
                    g[i][j]|=g[i][k]&g[k][j];
        int cnt=0;
        memset(match,0,sizeof(match));
        for(int i=1;i<=n;i++)
        {
            tsp=i;
            if(dfs(i)) cnt++;
        }
        printf("%d\n",n-cnt);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:57:10
      #include<bits/stdc++.h>
      using namespace std;
      const int N=210;
      int n,m,tsp,match[N],v[N],g[N][N];
      bool dfs(int x)
      {
          for(int y=1;y<=n;y++)if(g[x][y]&&v[y]!=tsp)
          {
              v[y]=tsp;
              if(!match[y]||dfs(match[y]))
              {
                  match[y]=x;
                  return 1;
              }
          }
          return 0;
      }
      int main()
      {
          scanf("%d%d",&n,&m);
          for(int i=1,x,y;i<=m;i++)
          {
              scanf("%d%d",&x,&y);
              g[x][y]=1;
          }
          for(int k=1;k<=n;k++)
      		for(int i=1;i<=n;i++)
              	for(int j=1;j<=n;j++)
                      g[i][j]|=g[i][k]&g[k][j];
          int cnt=0;
          memset(match,0,sizeof(match));
          for(int i=1;i<=n;i++)
          {
              tsp=i;
              if(dfs(i)) cnt++;
          }
          printf("%d\n",n-cnt);
          return 0;
      }
      • 1

      *【二分图:有向无环图的最小路径可重复点覆盖】Vani和Cl2捉迷藏

      信息

      ID
      1468
      时间
      1000ms
      内存
      64MiB
      难度
      5
      标签
      递交数
      61
      已通过
      23
      上传者