不小心把帖删了 QAQ
以下是部分代码
#include <iostream>
#include <algorithm>
using namespace std;
int N,k;
struct Tree{
int ans,V,F,id;
}tree[100005];
bool cmp(Tree a, Tree b){
return a.V > b.V;
}
bool cmp2(Tree a, Tree b){
return a.id < b.id;
}
int main()
{
scanf("%d",&N);
tree[1].F = 1;
for (int i = 1; i <= N; i++) tree[i].id = i;
for (int i = 1; i <= N; i++) scanf("%d",&tree[i].V);
for (int i = 2; i <= N; i++) scanf("%d",&tree[i].F);
sort(tree+1,tree+1+N,cmp);
for (int i = 1; i <= N; i++) printf("%d %d\n",tree[i].id,tree[tree[i].F].id);
return 0;
}
一组数据:
5
6
2
9
14
7
1
1
3
4
不注释sort的话,为什么每个点的父结点变了啊QAQ(请回答的语气温柔点)
输出的是某个点和该点的父结点