测试点猎奇
2025-12-16 20:52:26
发布于:上海
3阅读
0回复
0点赞
我的代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int N,M;
cin>>N>>M;
vector<int>A(N+1);
for(int i=1;i<=N;++i)cin>>A[i];
vector<vector<int>>G(N+1),R(N+1);
for(int i=0;i<M;++i){
int u,v;
cin>>u>>v;
G[u].push_back(v);
R[v].push_back(u);
}
vector<int>mn(N+1,1e9),mx(N+1,-1e9);
queue<int>q;
for(int i=1;i<=N;++i){
mn[i]=min(mn[i],A[i]);
q.push(i);
}
while(!q.empty()){
int u=q.front();
q.pop();
for(int v:G[u]){
if(mn[v]>mn[u]){
mn[v]=mn[u];
q.push(v);
}
}
}
for(int i=N;i>=1;--i){
mx[i]=max(mx[i],A[i]);
q.push(i);
}
while(!q.empty()){
int u=q.front();
q.pop();
for(int v:R[u]){
if(mx[v]<mx[u]){
mx[v]=mx[u];
q.push(v);
}
}
}
int ans=-1e9;
for(int i=1;i<=N;++i)ans=max(ans,mx[i]-mn[i]);
cout<<ans<<'\n';
return 0;
}
而当我提交之后,发现第14个测试点:(不想说了,可以提交这段代码,然后用ACGO的查看测试点的功能自己看一眼)
这里空空如也







有帮助,赞一个