01 #include<bits/stdc++.h>
02 using namespace std;
03 unordered_map<long long,int> sign;
04 long long cnt,ids[5050],record[5050][5050]{},n;
05 void install(long long id)
06 {
07 for(long long i=1;i<=ids[id];i++)
08 {
09 if(!sign[record[id][i]]) install(record[id][i]);
10 }
11 sign[id]=1;
12 cnt++;
13 }
14 int main()
15 {
16 cin>>n;
17 for(long long i=1;i<=n;i++)
18 {
19 cin>>ids[i];
20 for(long long j=1;j<=ids[i];j++)
21 {
22 cin>>record[i][j];
23 }
24 }
25 long long i=1;
26 install(1);
27 cout<<cnt;
28 return 0;
29 }
假设输入的数字均在long long范围内,1≤n≤5000,且输入数据均合法。
1.该程序实现了一个统计算法,读入了n个数据并且统计其中相同数字的个数( )
2.第4行中如果删去“{}”,程序的运行结果不会发生改变。( )
3.如果删去第11行的语句,程序的运行结果会保持不变。( )
4.对于以下输入数据,该程序的输出结果为( ):
10
3 2 3 4
2 5 7
1 4
3 6 7 5
1 10
0
0
0
0
1 9
A.6
B.7
C.8
D.9
5.下列说法中正确的是( )
A.当第(N+1)行的第1个数字(如果有)是N的话,程序会进入死循环
B.当第(N+1)行的第2个数字(如果有)是N的话,程序会进入死循环
C.程序的输出一定小于N−1
D.程序的输出一定大于1
6.如果读入的ids[i]的和为n,该程序最坏的时间复杂度最接近为( )
A.O(n)
B.O(nlogn)
C.O(n2)
D.O(n!)