| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
JAVA Why is not rightpackage acm.pku.edu.fishcanfly;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Main {
private static int n;
private static int m;
private static boolean map[][] = new boolean[27][27];
private static int res = -1;
private static int step = 0;
private static char[] ans = new char[26];
public static void main(String[] args) {
String s = null;
while (true) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
m = in.nextInt();
if (n == 0) {
break;
}
initMap();
BufferedReader in2 = new BufferedReader(new InputStreamReader(
System.in));
for (int cnt = 1; cnt <= m; cnt++) {
try {
s = in2.readLine();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
parseS(s);
if (res != 0) {
continue;
}
if ((res = dealResult()) != 0) {
step = cnt;
}
}
if (res == 0) {
System.out.println("Sorted sequence cannot be determined.");
}
else if(res == 2){
System.out.println("Inconsistency found after " + step
+ " relations.");
} else {
System.out.println("Sorted sequence determined after "
+ step + " relations: " + ans.toString() + ".");
}
}
}
private static int dealResult() {
int i, j, k;
// TODO 自动生成方法存根
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
for (k = 0; k < n; k++) {
if (map[i][k] && map[k][j]) {
map[i][j] = true;
}
}
}
}
for (i = 0; i < n; i++) {
for (j = i; j < n; j++) {
if (map[i][j] && map[j][i]) {
return 2;
}
}
}
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if ((!map[i][j] && !map[j][i])) {
return 0;
}
}
}
char ch = 'A';
String seq = null;
for (i = 0; i < n; i++) {
int c = 0;
for (j = 0; j < n; j++) {
if (map[i][j]) {
c++;
}
}
ans[(n - 1) - c] = ch;
ch++;
}
ans[n] = '\0';
seq = ans.toString();
return 1;
}
private static void parseS(String s) {
// TODO 自动生成方法A存根
map[s.charAt(0) - 'A'][s.charAt(2) - 'A'] = true;
}
private static void initMap() {
ans = new char[26];
res = 0;
// TODO 自动生成方法存根
for (int i = 0; i < 26; i++) {
for (int j = 0; j < 26; j++) {
map[i][j] = false;
}
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator