社区讨论
71AC 24WA求助
AT_abc335_e[ABC335E] Non-Decreasing Colorful Path参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lrublrc3
- 此快照首次捕获于
- 2024/01/26 15:27 2 年前
- 此快照最后确认于
- 2024/01/26 17:15 2 年前
CPP
#include<bits/stdc++.h>
#define ll long long
#define ri register long long
#define rll register long long
#define ld long double
#define dd double
#define umap unordered_map
#define pqueue priority_queue
#define inf64 1e18
#define inf32 1e9
#define mkp make_pair
#define pp pair<int,int>
#define endl '\n'
#define int long long
using namespace std;
int n,m,a[200001],head[200001],top,ans[200001];
bool flag[200001];
priority_queue<pp,vector<pp>,greater<pp> > mp[200001];
unordered_map<int,bool> mp2[200001];
inline void dfs(int x){
if(x==n)return;
for(auto it=mp2[x].begin();it!=mp2[x].end();it++){
if(ans[it->first]<ans[x]){
ans[it->first]=ans[x],dfs(it->first);
}
}
while(!mp[x].empty()){
int y=mp[x].top().second;
mp[x].pop();
if(ans[y]<ans[x]+1){
ans[y]=ans[x]+1;
dfs(y);
}
}
}
signed main(){
//freopen("test_16.txt","r",stdin);
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(ri i=1;i<=n;i++)cin>>a[i];
ans[1]=1;
for(ri i=1;i<=m;i++){
int u,v;
cin>>u>>v;
if(a[u]<a[v])mp[u].push(mkp(a[v],v));
else if(a[u]>a[v])mp[v].push(mkp(a[u],u));
else mp2[u][v]=mp2[v][u]=1;
}
dfs(1);
cout<<ans[n];
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...