http://codeforces.com/contest/500/problem/B
互いに素セット
1つの インポートjava.util.Scanner。 2つの 3 パブリック クラスメイン{ 4 静的 最終 INT MAX = Integer.MAX_VALUEで、 5 静的 INT [] F = 新しい INT [1000 ]。 6 7 パブリック 静的 ボイドメイン(文字列[]引数){ 8 スキャナーIO = 新しいスキャナ(System.in)。 9 INT N = io.nextInt()。 10 11 INT [] = 新しい INT [N]。 12 のための(int型 i = 0; iがN <; I ++は、[I] = I F)[I] = io.nextInt()。 13 14 のために(int型 I = 0、FX、FY、iがn <; iは++ ){ 15 のString = io.nextLine()。 16 一方(s.length()== 0)S = io.nextLine()。 17 のために(INT J ++; J <s.length()J = 0 ) 18 であれば(s.charAt(J)== '1' ){ 19 Fxが= (i)を見つけます。 20 年度には、= (j)を見つけます。 21 F [FX] = FY。 22 } 23 } 24 25 のために(int型 i = 0; iがN <; Iは++ ){ 26 のために(int型 J = I + 1、J <nであり、j ++ ){ 27 であれば([I]> [J] &&見つけます(I)== 検索(J)){ 28 INT T = A [i]は、 29 [i]は= [j]を。 30 [j]は= Tと、 31 } 32 } 33 } 34 35 のために(INTI = 0; 私は、n <; 私は++)System.out.print([I] + "" )。 36 } 37 38 静的 INT検索(INT X){ 39 リターン [X] == X F?X:([X] = F [X])F(見つけます); 40 } 41 42 }