[TIOJ] 1089 Asteroids

LINK:http://tioj.infor.org/problems/1089
  經典二分圖匹配問題,直接寫就好了,不過我一直對二分圖匹配不熟,希望這次有好好學起來@@,還有我發現我的模板在TIOJ上面不能compile,要想想辦法QQ
  也就是每次對新的一顆交錯樹找有沒有擴增路徑之類的。

#include<bits/stdc++.h>
using namespace std;
int mx[509],my[509];
int n,k,ans;
bool adj[509][509];
bool vy[509];
bool DFS(int x)
{
    for(int y = 1; y <= n; y++)
        if(adj[x][y] && !vy[y])
        {
            vy[y] = 1;
            if(my[y] == 0 || DFS(my[y]))
            {
                tie(mx[x],my[y]) = make_tuple(y,x);
                return 1;
            }
        }
    return 0;
}

int main()
{
    cin >> n >> k;
    while(k--)
    {
        int a,b;cin >> a >> b;
        adj[a][b] = 1; 
    } 
    for(int i = 1; i <= n; i++)
    {
        memset(vy,0,sizeof(vy));
        if(DFS(i)) ans++;
    }
    cout << ans << endl;
}

留言

這個網誌中的熱門文章

Shellshock.io從入門到上手(針對單狙)(沒有圖片、影片版本)

[TIOJ] 1007燈泡問題