Asteroids--POJ 3041

6188 단어 poj
1. 제목 유형: 도론, 최대 2분 일치, 헝가리 알고리즘.
2. 문제 풀이 사고방식: 풀이 최소 집합 덮어쓰기, 즉 풀이 최대 2분의 일치, 헝가리 알고리즘의 간단한 응용.
3. 주의사항: 헝가리 알고리즘의 귀속 과정을 모의한다.
4. 구현 방법:

  
    
#include < iostream >
using namespace std;
#define Max 510

int n,k,match[Max];
bool map[Max][Max],vis[Max];

bool DFS( int s)
{
int i;
for (i = 1 ;i <= n;i ++ )
{
if (map[s][i] && ! vis[i])
{
vis[i]
= 1 ;
if (match[i] == 0 || DFS(match[i]))
{
match[i]
= s;
return true ;
}
}
}
return false ;
}

int main()
{
int i,r,c,ans = 0 ;
cin
>> n >> k;
for (i = 0 ;i < k;i ++ )
{
cin
>> r >> c;
map[r][c]
= 1 ;
}

for (i = 1 ;i <= n;i ++ )
{
memset(vis,
0 , sizeof (vis));
if (DFS(i))
ans
++ ;
}
cout
<< ans << endl;
return 1 ;
}

좋은 웹페이지 즐겨찾기