<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一、二分圖匹配

      給出一張二分圖,請求出最大匹配數量

      匈牙利算法:

      讓左邊的與右邊的

       

      #include <bits/stdc++.h>
      #define maxn 1005
      #define icn cin 
      #define itn int
      using namespace std;
      //左邊的每個人都嘗試去和右邊的人匹配 
      bool z[maxn][maxn];//z[i][j] 代表左邊第i個點和右邊第j個點能不能匹配 
      int dist[maxn];
      int n,m;
      bool vis[maxn]; //vis[i] 代表右邊第i個點在這一輪中有沒有被請求匹配 
      //左邊有n 個點 右邊有m個點
      int k;//邊數 
      long long ans = 0; 
      int reault[maxn];//result[i] 代表右邊第i個點和左邊第result[i]個點匹配 
      bool dfs(int i){//讓左邊第i個點嘗試  
          for(int j = 1; j <= m; j++)//讓左邊額第i個點和右邊的第j個點嘗試匹配
              if(z[i][j] && !vis[j]){
                  vis[j] = true;//有點匹配 
                  if(!result[j] || dfs(result[j])){
                      result[j] = i;
                      return true;
                  }
              }
          return false;
      }
      int main(){
          ios::sync_with_stdio(false);
          cin >> n >> m;
          for(int i = 1; i <= k; i++){
              int p1,p2;
              cin >> p1 >> p2;
              z[p1][p2] = true;
          }
          for(int i = 1; i <= n; i++){
              memset(vis,false,sizeof(vis));
              if(dfs(i)) ans ++;
          }
          cout << ans << '\n';
          return 0;
          //O(n^3) 
      }

       

      優化:

      #include<bits/stdc++.h>
      #define ll long long
      #define itn int
      
      using namespace std;
      
      const int maxn=1005;
      int n,m,k;
      int ans;
      vector<int> z[maxn];
      //z[i][j]代表左邊第i個點第j個條邊連向誰 
      //n代表左邊有n個點
      //m代表右邊有m個點 
      bool vis[maxn];
      //vis[i]代表右邊第i個點在這一輪中有沒有被請求匹配
      int result[maxn];
      //result[i] 代表右邊第i個點和左邊第result[i]個點匹配 
      
      void add_edge(int p1,int p2)
      {
          z[p1].push_back(p2);
      }
      
      inline bool dfs(int i)
      {
          //讓左邊第i個點嘗試匹配
          //返回是否匹配成功
          for(int k=0;k<z[i].size();k++)
          {
              //讓左邊第i個點和右邊第j個點匹配 
              int j=z[i][k];
              if(!vis[j])
              {
                  vis[j]=true;
                  if(!result[j]||dfs(result[j]))
                  {
                      //右邊這個點j沒有和任何點匹配
                      result[j]=i;
                      return true; 
                  }
              }
          }
          return false;
          //枚舉所有點都不可行 
      }
      
      int main(){
          cin>>n>>m>>k;
          for(int i=1;i<=k;i++)
          {
              int p1,p2;
              cin>>p1>>p2;
              add_edge(p1,p2);
          }
          for(int i=1;i<=n;i++)
          {
              memset(vis,false,sizeof(vis));
              if(dfs(i)) ans++;//左邊第i個點匹配成功,增加答案數量 
          }
          cout<<ans;
          return 0;
      }
       

       

      posted on 2023-07-13 11:28  Slz_konnyaku  閱讀(50)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 东京热人妻无码一区二区av| 久久精品亚洲国产综合色| 国产成人综合在线女婷五月99播放| 四虎www永久在线精品| 国产人妻大战黑人第1集| 欧洲亚洲成av人片天堂网| 午夜精品视频在线看| 精品国产精品午夜福利| 成人精品区| 猫咪社区免费资源在线观看| 巴林右旗| 精品国精品国自产在国产| 国产国产午夜福利视频| 胸大美女又黄的网站| 丝袜无码一区二区三区| 长腿校花无力呻吟娇喘| 国产va免费精品观看| 女同另类激情在线三区| 亚洲中文字幕精品第三区| 日韩在线视频网| 国产精品久久久一区二区三区| 热久久美女精品天天吊色| 精品久久久中文字幕一区| 中国女人熟毛茸茸A毛片| 无码无需播放器av网站| 亚洲精品理论电影在线观看| 亚洲 一区二区 在线| 国产在线无码不卡播放| 日本免费精品| 久久99精品久久久久久9| 精品婷婷色一区二区三区| 久久精品国产亚洲av电影| 天堂V亚洲国产V第一次| 色吊丝一区二区中文字幕| 日本怡春院一区二区三区| 亚洲另类激情专区小说图片| 天天燥日日燥| 国产午夜亚洲精品不卡下载| 亚洲精品动漫免费二区| 国产高清亚洲一区亚洲二区| 久久综合综合久久综合|