poj 1274 -- The Perfect Stall (二分图)
2013-05-19 14:31
357 查看
小小纪念
# include <cstdio>
# include <iostream>
# include <set>
# include <map>
# include <vector>
# include <list>
# include <queue>
# include <stack>
# include <cstring>
# include <string>
# include <cstdlib>
# include <cmath>
# include <algorithm>
# define ll long long
using namespace std ;
struct Edge {
int v , next ;
} g [ 50000 ] ; ;
int head [ 210 ] , cnt ;
bool vis [ 210 ] ;
int n , m , cx [ 210 ] , cy [ 210 ] ;
void addedge ( int u , int v )
{
g [ cnt ] . v = v ;
g [ cnt ] . next = head [ u ] ;
head [ u ] = cnt ++ ;
}
bool dfs ( int u )
{
for ( int i = head [ u ] ; ~ i ; i = g [ i ] . next ) {
int v = g [ i ] . v ;
if ( ! vis [ v ] ) {
vis [ v ] = 1 ;
if ( cy [ v ] == -1 || dfs ( cy [ v ] ) ) {
cx [ u ] = v ;
cy [ v ] = u ;
return true ;
}
}
}
return false ;
}
int fuck ( )
{
int ans = 0 ;
memset ( cx , -1 , sizeof ( cx ) ) ;
memset ( cy , -1 , sizeof ( cy ) ) ;
for ( int i = 1 ; i <= n ; i ++ ) {
if ( cx [ i ] == -1 ) {
memset ( vis , 0 , sizeof ( vis ) ) ;
ans += dfs ( i ) ;
}
}
return ans ;
}
int main ( )
{
cin . sync_with_stdio ( false ) ;
while ( cin >> n >> m ) {
cnt = 0 ;
memset ( head , -1 , sizeof ( head ) ) ;
for ( int i = 1 ; i <= n ; i ++ ) {
int num ;
cin >> num ;
while ( num -- ) {
int v ;
cin >> v ;
addedge ( i , v ) ;
}
}
cout << fuck ( ) << endl ;
}
}
# include <cstdio>
# include <iostream>
# include <set>
# include <map>
# include <vector>
# include <list>
# include <queue>
# include <stack>
# include <cstring>
# include <string>
# include <cstdlib>
# include <cmath>
# include <algorithm>
# define ll long long
using namespace std ;
struct Edge {
int v , next ;
} g [ 50000 ] ; ;
int head [ 210 ] , cnt ;
bool vis [ 210 ] ;
int n , m , cx [ 210 ] , cy [ 210 ] ;
void addedge ( int u , int v )
{
g [ cnt ] . v = v ;
g [ cnt ] . next = head [ u ] ;
head [ u ] = cnt ++ ;
}
bool dfs ( int u )
{
for ( int i = head [ u ] ; ~ i ; i = g [ i ] . next ) {
int v = g [ i ] . v ;
if ( ! vis [ v ] ) {
vis [ v ] = 1 ;
if ( cy [ v ] == -1 || dfs ( cy [ v ] ) ) {
cx [ u ] = v ;
cy [ v ] = u ;
return true ;
}
}
}
return false ;
}
int fuck ( )
{
int ans = 0 ;
memset ( cx , -1 , sizeof ( cx ) ) ;
memset ( cy , -1 , sizeof ( cy ) ) ;
for ( int i = 1 ; i <= n ; i ++ ) {
if ( cx [ i ] == -1 ) {
memset ( vis , 0 , sizeof ( vis ) ) ;
ans += dfs ( i ) ;
}
}
return ans ;
}
int main ( )
{
cin . sync_with_stdio ( false ) ;
while ( cin >> n >> m ) {
cnt = 0 ;
memset ( head , -1 , sizeof ( head ) ) ;
for ( int i = 1 ; i <= n ; i ++ ) {
int num ;
cin >> num ;
while ( num -- ) {
int v ;
cin >> v ;
addedge ( i , v ) ;
}
}
cout << fuck ( ) << endl ;
}
}
相关文章推荐
- poj The Perfect Stall 1274 (二分图最大匹配)
- POJ 1274 The Perfect Stall(二分图最大匹配)
- poj1274 The Perfect Stall(二分图模板题)
- POJ1274 The Perfect Stall【二分图最大匹配】
- POJ1274:The Perfect Stall(二分图最大匹配 匈牙利算法)
- Poj 1274 The Perfect Stall[二分图最大匹配]
- 二分图学习小记 Poj 1274 The Perfect Stall
- POJ 1274-The Perfect Stall(二分图_最大匹配)
- POJ-1274-The Perfect Stall【二分图最大匹配】【模板题】
- POJ1274:The Perfect Stall(二分图最大匹配 匈牙利算法)
- 【二分图+最大匹配】北大 poj 1274 The Perfect Stall
- POJ 1274 The Perfect Stall (二分图最大匹配入门题,匈牙利算法)
- poj 1274 The Perfect Stall (二分图)
- POJ 1274 The Perfect Stall 二分图最大匹配
- POJ1274 The Perfect Stall [二分图最大匹配 匈牙利算法]
- POJ 1274 The Perfect Stall(二分图最大匹配)
- [POJ] 1274 The Perfect Stall(二分图最大匹配)
- POJ 1274 The Perfect Stall(二分图最大匹配)
- POJ 1274 The Perfect Stall(二分图最大匹配)
- POJ 1274 The Perfect Stall (第一道二分图最大配对)