POJ 2492 이분 도 판단 및 수집
이분 도 판단 해서 할 수도 있 고, 병 찰 집 으로 할 수도 있 고, 내일 보충 해서 집 을 찾 을 수도 있어 요.
이분 도:
만약 에 이 N 개의 BUG 간 에 이성 간 에 만 관계 가 있다 면 이 N 개의 BUG 에 대해 하나의 관계 도 를 만 들 고 동성 간 의 BUG 간 에 관계 가 없 으 며 서로 다른 성별 간 에 점 집 을 두 가지 유형 으로 나 눌 수 있다. A B 집합 내부 에 관계 가 없 으 면 이 그림 은 2 분 의 그림 으로 판단 하 는 데 자주 사용 되 는 방법 이다.그림 염색법 두 가지 색 은 그림 을 인접 점 을 서로 다른 색 으로 염색 할 수 있 으 며 이분 도 는 DFS 로 이분 도 에 구멍 이 있 는 지 판단 한다. 이 그림 은 몇 개의 이분 도 로 구 성 된 그림 일 수 있 으 므 로 모든 연결 도 를 판단 해 야 한다.
코드 는 다음 과 같 습 니 다:
#include
#include
#include
#define sf scanf
#define pf printf
using namespace std;
const int maxn = 2000 + 5;
int color[maxn];
bool Adj[maxn][maxn];
int n,m;
bool DFS(int cur){
for(int i = 1;i <= n;++i){
if(Adj[i][cur]){
if(color[i] == color[cur]){
return false;
}
if(color[i] == -1){
color[i] = color[cur] == 0 ? 1 : 0;
if( DFS(i) == false ) return false;
}
}
}
return true;
}
int main(){
int T;sf("%d",&T);
int ca = 0;
while(T--){
sf("%d%d",&n,&m);
memset(Adj,0,sizeof(Adj));
for(int i = 0;i < m;++i){
int u,v;sf("%d%d",&u,&v);
Adj[u][v] = Adj[v][u] = 1;
}
memset(color,-1,sizeof(color));
bool ans = true;
for(int i = 1;i <= n;++i){
if(color[i] == -1){
color[i] = 0;
ans = DFS(i);
}
if(!ans) break;
}
pf("Scenario #%d:
",++ca);
if(ans){
pf("No suspicious bugs found!
");
}
else pf("Suspicious bugs found!
");
if(T) pf("
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【JavaScript】 볼록함 그라함 스캔을 구현, 애니메이션화한다! ? 【canvas】볼록포를 시각화해 본다. — s-yoshiki | 스크립트 카스 (@s_yoshiki_dev) JavaScript에서 그레이엄 스캔에 의해 정렬되어 가는 애니메이션을 구현했다. 아래쪽에서 데모로 소개. 참고 Java...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.