1466:Girls and Boys

keyword

2部グラフ 最大独立点集合 C++

概要

頂点数V(<500)の2部グラフが与えられる。最大独立点集合を求める問題。
色々調べてみると、V-|最大マッチング|になるらしい。計算量O(V*E)。

int main(){
    int all;
    while(scanf("%d",&all)!=EOF){
        V = 500;
        for(int i=0; i<V; i++)
            G[i].clear();
        for(int i=0; i<all; i++){
            int v,m,u;
            scanf(" ");
            scanf("%d: (%d)",&v,&m);
            for(int j=0; j<m; j++){
                scanf("%d",&u);
                G[v].push_back(u);
            }
        }
        printf("%d\n",all-bipartite_matching());
    }
    return 0;
}