0
点赞
收藏
分享

微信扫一扫

Codeforces Round #611 (Div. 3)(F. DIY Garland 树+优先队列)

善解人意的娇娇 2022-03-13 阅读 78


Codeforces Round #611

前五题水题。。。直接来第六题

Codeforces Round #611 (Div. 3)(F. DIY Garland 树+优先队列)_javascript

题意很难懂,懂了想到这个做法也很奇妙了。。。

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int vis[N],n,du[N],a[N];
priority_queue<int,vector<int>,greater<int> >que;
vector<pair<int,int> >ans;
stack<int>sta;
int main()
{
scanf("%d",&n);
for(int i=1;i<n;++i){
int x;
scanf("%d",&a[i]);
sta.push(a[i]);
du[a[i]]++;
vis[a[i]]=1;
}
for(int i=1;i<=n;++i) if(!vis[i]) que.push(i);

for(int i=n-1;i;--i){
int t=que.top();que.pop();
du[a[i]]--;
ans.push_back(make_pair(t,a[i]));
if(du[a[i]]==0) que.push(a[i]);
}

printf("%d\n",a[1]);
for(int i=ans.size()-1;i>=0;--i){
auto t=ans[i];
printf("%d %d\n",t.first,t.second);
}
return 0;
}



举报

相关推荐

0 条评论