알고리즘 훈련 침투

2969 단어 알고리즘
문제 설명
좋 은 아침 입 니 다. 특 공 W - 12, 당신 이 완수 해 야 할 다음 과 같은 임무 입 니 다.
우 리 는 이미 혼란 과 재난 이라는 조직 에 침투 하여 이 조직의 관리 권 을 장악 할 수 있 기 를 희망 한다.불 행 히 도 그들 은 이런 사건 에 대처 할 준비 가 되 어 있 는 것 같다. 그들 은 복잡 한 디자인 으로 관리 권력 을 분배 하 는 것 을 사용 하여 우리 의 침투 작업 을 매우 어렵 게 만 들 었 다.
그 조직의 관리 시스템 은 여러 개의 단위 로 나 뉘 어 져 있 는데 임의의 두 단위 의 A 와 B 에 대해 A 가 B 를 관리 하거나 B 가 A 를 관리 하 는 동시에 이 관리 관 계 는 고 리 를 형성 할 수 있 기 때문에 A 가 B, B 가 C, C 가 A 를 관리 하 는 상황 이 발생 할 수 있다.
우 리 는 특 공 을 임 의 부서 에 침투 시 킬 수 있다. 그러면 우 리 는 이 부서 와 그 부서 가 직접 관리 하 는 단 위 를 통제 할 수 있 지만 간접 적 으로 관리 하 는 단 위 는 포함 되 지 않 는 다.예 를 들 어 이전의 사례 는 A 단위 에 침투 하면 A 와 B 를 통제 하 게 되 지만 C 를 통제 할 수 없다.
성공 적 인 침투 작업 에 있어 서 우 리 는 모든 단 위 를 통제 해 야 한다. 그렇지 않 으 면 다른 부서 에서 우 리 를 발견 하고 우리 의 계획 을 파괴 할 것 이다.그리고 너 도 알다 시 피 우 리 는 지금 더 높 은 부서 에서 받 은 경비 가 매우 부족 하 다. 우 리 는 반드시 가장 효과적으로 임 무 를 완성 해 야 한다.너의 임 무 는 통제 부서 의 최소한 의 실행 가능 한 방안 을 찾 는 것 이다.
입력 형식
첫 번 째 줄 은 하나의 정수 n 을 포함 하여 이 조직의 단위 수 를 나타 낸다.다음 n 줄 마다 n 개의 바 이 너 리 입 니 다.그 중에서 i 줄 의 j 열 위 치 는 1 로 i 단위 가 j 단 위 를 제어 하 는 것 을 나타 내 고 그렇지 않 으 면 j 단위 가 i 단 위 를 제어 한다.
출력 형식
모두 한 줄, 첫 번 째 정수 ans 는 가장 적은 통제 단위 의 수량 을 나타 내 고 그 다음 에 ans 개의 정 수 는 임 의 한 조 가 실행 가능 한 방안 을 나타 낸다.
샘플 입력
샘플 1:
2
00
10
샘플 2:
3
010
001
100
샘플 3:
5
01000
00011
11001
10100
10010
샘플 출력
샘플 1:
1 2
샘플 2:
2 1 2
샘플 3:
2 2 3
데이터 규모 와 약정
30% 의 데이터 n < = 10.
50% 의 데이터 n < = 30.
100% 데이터 n < = 75.
n * n 의 01 행렬 에서 모든 i 행 i 열 위 치 는 0 이 고 i 행 j 열 과 j 행 i 열 두 위치 가 마침 하 나 는 0 (i ≠ j) 이다.
이 문 제 는 하나의 조건 을 포함 하고 있다. 대각선 의 0 은 사실 1 로 볼 수 있 고 마지막 문 제 는 가장 적은 문자열 수 를 찾 아 문자열 의 값 을 모두 1 로 바 꾸 는 것 으로 바 뀌 었 다.
처음에는 폭력 법 으로 매 거 하려 고 했 는데 데이터 양 과 알고리즘 양 을 보 니 시간 이 초 과 될 것 같 아 광 수 를 통 해 판단 했다.
근 데 20 팀 은 2 팀 이 시간 을 초 과 했 어 요. 90 점 밖 에 안 됐어 요.
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Scanner;

public class infiltration {
	static String []m;
	static String end="";
	static int n;
	static class edge
	{
		String now;//     
		int count; //    
		int a[];   //         
		public edge(String now,int count) 
		{
			this.now=now;
			this.count=count;
			a=new int[76];
		}
		public void input(int i)//        
		{
			count++;
			a[count-1]=i;
		}
	}
	public static void bfs()
	{
		LinkedList a =new LinkedList<>();// list    
		HashSet hashSet=new HashSet<>();//        
		for(int i=1;i

좋은 웹페이지 즐겨찾기