#include <iostream>
#include <vector>

using namespace std;

int main() {
    int N;
    cin >> N;
    
    vector<int> contacts(N);
    contacts[0] = 1;
    
    for (int i = 1; i < N; i++) {
        int k, p;
        cin >> k >> p;
        
        if (p == 0) {
            contacts[i] = contacts[k-1];
            contacts[k-1] = i+1;
        } else {
            contacts[i] = i+1;
        }
    }
    
    for (int i = 0; i < N; i++) {
        cout << contacts[i] << " ";
    }
    
    return 0;
}

使用C++编写了以上代码,实现了根据联系关系构造联系表的功能。首先读入N表示特工的数量,然后使用vector contacts存储联系表。初始时将1号特工安排进联系表,然后依次读入每个特工的联系方式,根据p的值将特工添加到对应上级或下级的位置。最后输出联系表中所有特工的代号

时空限制:1S64MB问题描述:为了加强保密我们不能再使用一整串联系序列了!现在我们使用一个多组单线联系的关系来构造整个联系表。构造方法如下。先将 1 号特工安排进联系表这时表中只有他一个人;2−N 号特工依次加入联系表代号为 i 的特工联系方式为:指定代号为 i 的特工是代号为 1∼i−1 中某位特工即之前已经在联系表的特工的上级或下级;在所有特工的联系关系按照上述方法建立完毕后就形成了新的联系

原文地址: https://www.cveoy.top/t/topic/hV0i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录