Submission #3403448
Source Code Expand
import java.util.*; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); int p[] = new int[N]; for(int i = 0; i < N; i++) { p[i] = sc.nextInt(); } int x[] = new int[M]; int y[] = new int[M]; for(int i = 0; i < M; i++) { x[i] = sc.nextInt(); y[i] = sc.nextInt(); } UnionFind.init(N); for(int i = 0; i < M; i++) { UnionFind.unite(x[i] - 1, y[i] - 1); } int cnt = 0; for(int i = 0; i < N; i++) { if(UnionFind.same(p[i] - 1, i)) { cnt++; } } System.out.println(cnt); } } class UnionFind { static int N; static int par[]; static int rank[]; public static void init(int n) { N = n; par = new int[N]; rank = new int[N]; for(int i = 0; i < N; i++) { par[i] = i; rank[i] = 0; } } public static int find(int x) { if(par[x] == x) { return x; } else { return par[x] = find(par[x]); } } public static void unite(int x, int y) { x = find(x); y = find(y); if(x == y) return; if(rank[x] < rank[y]) { par[x] = y; } else { par[y] = x; if(rank[x] == rank[y]) rank[x]++; } } public static boolean same(int x, int y) { return find(x) == find(y); } }
Submission Info
Submission Time | |
---|---|
Task | D - Equals |
User | YK0809 |
Language | Java8 (OpenJDK 1.8.0) |
Score | 400 |
Code Size | 1331 Byte |
Status | AC |
Exec Time | 613 ms |
Memory | 90236 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt |
All | 0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_000.txt | AC | 92 ms | 18640 KB |
0_001.txt | AC | 93 ms | 22996 KB |
0_002.txt | AC | 93 ms | 18640 KB |
0_003.txt | AC | 91 ms | 20820 KB |
1_004.txt | AC | 501 ms | 61372 KB |
1_005.txt | AC | 602 ms | 90236 KB |
1_006.txt | AC | 613 ms | 86552 KB |
1_007.txt | AC | 92 ms | 19156 KB |
1_008.txt | AC | 93 ms | 20948 KB |
1_009.txt | AC | 90 ms | 18900 KB |
1_010.txt | AC | 92 ms | 19796 KB |
1_011.txt | AC | 99 ms | 20052 KB |
1_012.txt | AC | 115 ms | 19924 KB |
1_013.txt | AC | 134 ms | 21840 KB |
1_014.txt | AC | 183 ms | 30072 KB |
1_015.txt | AC | 119 ms | 22612 KB |
1_016.txt | AC | 120 ms | 22228 KB |
1_017.txt | AC | 152 ms | 24020 KB |
1_018.txt | AC | 497 ms | 61316 KB |
1_019.txt | AC | 403 ms | 48812 KB |
1_020.txt | AC | 417 ms | 52624 KB |
1_021.txt | AC | 433 ms | 46512 KB |
1_022.txt | AC | 605 ms | 90144 KB |