就这个代码,交一次一个MLE,交第二次两个MLE,交第三次换了个测试点MLE,交第四次就过了,真的笑麻了!哈哈哈哈哈!
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int n,m;
static int M=500010;
static int N=5010;
static int h[]=new int[N],e[]=new int[M-9],ne[]=new int[M-9],idx=1;
static int father[]=new int[N];
static int p=80112002;
static int num[]=new int[N];
static int res=0;
static void add(int a,int b) {
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
static int dfs(int u) {
if(h[u]==-1) {
return 1;
}
if(num[u]!=0) {
return num[u]%p;
}
for(int i=h[u];i!=-1;i=ne[i]) {
int j=e[i];
num[u]=(num[u]+dfs(j))%p;
}
return num[u]%p;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
Arrays.fill(h, -1);
Arrays.fill(father, -1);
for(int i=1;i<=m;i++) {
int a=sc.nextInt();
int b=sc.nextInt();
add(a, b);
father[b]=a;
}
for(int i=1;i<=n;i++) {
if(father[i]==-1) {
res=(res+dfs(i))%p;
}
}
System.out.print(res);
}
}