60分求调
查看原帖
60分求调
1045961
穼柗°楼主2024/6/16 21:59

第三个子任务前两个测试点WA,代码↓

#include <unordered_map>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
queue<int> q;
vector<int> e[100001];
unordered_map<int,int> dis;
signed int n,m,ans=1,ind[100001],a[100001],dp[100001][11];
signed main(void) {
	scanf("%d%d",&n,&m);
	register int i;
	for(i=1;i<=n;i++)
		scanf("%d",a+i);
	for(int u,v;m--;ind[v]++,e[u].push_back(v))
		scanf("%d%d",&u,&v);
	for(i=1;i<=n;i++)
		if(!ind[i])
			dis[i]=a[i],
			q.push(i),
			dp[i][a[i]]=1;
	register int x,j;
	while(q.size()) {
		x=q.front();
		q.pop();
		for(register int i: e[x])
			if(!--ind[i]) {
				for(j=1;j<=10;j++)
					dp[i][j]=dp[x][j];
				dis[i]=dis[x]*11+a[i],
				q.push(i);
				for(j=1;j<=a[i];j++)
					ans=max(ans,dp[i][a[i]]=max(dp[i][a[i]],dp[x][j]+1));
			}
	}
	printf("%d",ans);
	return 0;
}
2024/6/16 21:59
加载中...