b3644 只有2 7对
查看原帖
b3644 只有2 7对
1059776
HSyuio77楼主2023/8/17 16:57
#include<iostream>
#include<cstring>
#include<deque>
using namespace std;
int main()
{
    int vis[100];//用来标记是否打过了 
    int c[100][100];//关系网 
    int b[100];//每个家族成员的先辈数量 
    memset(c, 0, sizeof(c));
    memset(b, 0, sizeof(b));
    memset(vis, 0, sizeof(vis));
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        int x;
        cin >> x;
        if (!x)
        {
            continue;
        }
        else//打出关系网 
        {
            int y;
            cin >> y;
            while (y)
            {
                c[x][y] = 1;
                x = y;
                b[y]++;
                cin >> y;
            }
        }
    }
    int flag=0;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {  
           
            if (!b[j] && !vis[j])//打出无前辈并没被标记的 
            {
            	if(flag==1)
            	cout<<" ";
            	flag=1;
                cout <<j;
                
                vis[j] = 1;
                for (int k = 1; k <= n; k++)//打出后的一系列操作 
                {
                    if (c[j][k])
                    {
                        c[j][k] = 0;
                        b[k]--;
                    }
                }
            }
        }
    }
    return 0;
}

2023/8/17 16:57
加载中...