这题空间我要笑吐了
查看原帖
这题空间我要笑吐了
411022
Kkklii楼主2022/3/21 14:54

就这个代码,交一次一个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);
	}
}

2022/3/21 14:54
加载中...