抖音工程师想要找到抖音里的红人,假设用户数为N,有M个关注关系对(A,B).(A,B)表示A关注了B,关注关系有传递性。如果一个用户被所有人关注,则是抖音红人。求抖音红人总数。
输入:
3
3
1 2 2 1 2 3
输出
1
import java.util.Scanner;
public class douYin {
/*用二维数组表示关注关系arr[i][j]=1表示i关注了j,根据输入初始化数组,根据传递性,
如果arr[i][j]=1且arr[j][j+1]=1,则arr[i][j+1]=1,
最后遍历每个列,是否都为1,表示被所有人关注,而不是遍历行,那是关注所有人。
*/
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=Integer.parseInt(sc.nextLine());
int m=Integer.parseInt(sc.nextLine());
int[][] arr=new int[n][n];
for(int i=0;i<m;i++) {
int a=sc.nextInt();
int b=sc.nextInt();
arr[a-1][b-1]=1;
}
for(int i=0;i<n;i++) {
arr[i][i]=1;
}
for(int i=0;i<n;i++) {
for(int j=0;j<n-1;j++) {
if(arr[i][j]==1&&arr[j][j+1]==1)
arr[i][j+1]=1;
}
}
int ans=0;
for(int i=0;i<n;i++) {
int num=0;
for(int j=0;j<n;j++) {
if(arr[j][i]==1)
num++;
}
if(num==n)
ans++;
}
System.out.println(ans);
}
}