Commit 1dcace1 1 parent 12f193b commit 1dcace1 Copy full SHA for 1dcace1
File tree 4 files changed +68
-0
lines changed
4 files changed +68
-0
lines changed Original file line number Diff line number Diff line change
1
+ import sys
2
+ from collections import deque
3
+
4
+
5
+ def solve ():
6
+ input = sys .stdin .readline
7
+ T = int (input ().strip ())
8
+
9
+ for _ in range (T ):
10
+ N = int (input ().strip ())
11
+ dts = [0 ] + list (map (int , input ().strip ().split ()))
12
+ incoming = [0 for _ in range (len (dts ))]
13
+ for i in range (len (dts )):
14
+ fr , to = i , dts [i ]
15
+ incoming [to ] += 1
16
+
17
+ queue = deque ()
18
+
19
+ for i in range (len (dts )):
20
+ if incoming [i ] == 0 :
21
+ queue .append (i )
22
+
23
+ while queue :
24
+ fr = queue .popleft ()
25
+ to = dts [fr ]
26
+ incoming [to ] -= 1
27
+ if incoming [to ] == 0 :
28
+ queue .append (to )
29
+
30
+ answer = 0
31
+ for i in range (len (dts )):
32
+ if incoming [i ] == 0 :
33
+ answer += 1
34
+
35
+ print (answer )
36
+
37
+ if __name__ == '__main__' :
38
+ solve ()
Original file line number Diff line number Diff line change
1
+ 2
2
+ 7
3
+ 3 1 3 7 3 4 6
4
+ 8
5
+ 1 2 3 4 5 6 7 8
Original file line number Diff line number Diff line change
1
+ 3
2
+ 0
Original file line number Diff line number Diff line change
1
+ import sys
2
+ from pathlib import Path
3
+ from unittest import TestCase
4
+ from main import solve
5
+
6
+
7
+ class Test (TestCase ):
8
+ def my_solve (self , testcase_input ):
9
+ sys .stdin = open (testcase_input , 'r' )
10
+ stdout = sys .stdout
11
+ sys .stdout = open ('stdout.txt' , 'w' )
12
+ solve ()
13
+ sys .stdout .close ()
14
+ sys .stdout = stdout
15
+
16
+ def test_solve (self , testcase_number : str ):
17
+ self .my_solve ('test' + testcase_number + '.txt' )
18
+ self .assertEqual (
19
+ Path ('test' + testcase_number + '_answer.txt' ).read_text ().strip (),
20
+ Path ('stdout.txt' ).read_text ().strip ())
21
+
22
+ def test1_solve (self ):
23
+ self .test_solve ('1' )
You can’t perform that action at this time.
0 commit comments