TJU/HDU Matrix Swapping//MAXMATCH
Matrix Swapping
Time Limit: 1.0 Seconds
Memory Limit: 65536K
Special Judge
Total Runs: 408
Accepted Runs: 108
Given an N * N matrix with each entry equal to 0 or 1. You can swap any two rows or any two columns. Can you find a way to make all the diagonal entries equal to 1? Source: Multi-School Training Contest - TOJ Site #1
Input
There are several test cases in the input. The first line of each test case is an integer N (1 ≤ N ≤ 100). Then N lines follow, each contains N numbers (0 or 1), separated by space, indicating the N * N matrix.
Output
For each test case, the first line contain the number of swaps M. Then M lines follow, whose format is "R a b"or "C a b", indicating swapping the row a and row b, or swapping the column a and column b. (1 ≤ a, b ≤ N). Any correct answer will be accepted, but M should not be more than 1000.
If it is impossible to make all the diagonal entries equal to 1, output only one one containing "-1".
Sample Input
2
0 1
1 0
2
1 0
1 0
Sample Output
1
R 1 2
-1
Author:HE, Liang
Note: Special judge problem, you may get "Wrong Answer"when output in wrong format.
이 문제는 아주 잘 냈어, 확실히.
처음에 나는 도대체 매칭으로 그를 할 수 있을지 계속 생각했다.두 줄을 교환하면 잘못된 전환을 초래할 수 있는지 생각하고 있기 때문이다.
나중에 생각해 보니 이 제목은 사실 우리가 N개의 동행하지 않는 다른 열의 1을 찾으러 가기 위해서이다. 그래서 우리는 줄이나 열을 교환할 때 이미 대각선에 있는 원소에 영향을 주지 않을 것이다. (이 점은 내가 의심스럽다. 나는 그가 대각선에 있는 원소의 판단 문장을 바꾸지 않을 것을 보증했다. 그러나 모두 WA였다. 왜 그런지 모르겠다)
또 교환된 문장을 출력할 때 줄 교환이나 열 교환에 집중하고 이 둘 중 하나를 선택하면 된다.
#include
//if(cas==n*n) printf("0/n"); //else if(cas
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cocos2d Lua 학습(一)ios에서 루아 함수 호출 및 전참 방법 lua 코드: 출력 결과: lua 호출 C++ 방법: add 함수: lua 코드: 출력 결과: 함수를 호출합니다. 함수를 호출하려면 다음 협의를 따르십시오. 우선, 호출할 함...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.