poj 2367 Genealogical tree

原题地址:http://poj.org/problem?id=2367

拓扑排序模板题吧。。题意输入一个n 有n个人 下面n行 ,第i行说明i是这一行数字的祖先 可以没有子孙 就是输入0 让给出一个序列 可以满足所有的子孙都在自己的祖先后面 bfs+邻接表
注:有多种可能的话 输出其中一种即可

#include<iostream>
#include<queue>
#include<vector>
#include<cstdio>
using namespace std;
vector<int>a[105];
int in[105]= {0};
int n;
void topu()
{
    queue<int>hsy;
    for(int i=1; i<=n; i++)
    {
        if(in[i]==0)///入度为0 说明是祖先 直接输出就好
            hsy.push(i),
                     cout<<i<<" ";
    }

    while(!hsy.empty())
    {
        int q=hsy.front();
        hsy.pop();
        for(int i=0; i<a[q].size(); i++)
        {
            in[a[q][i]]--;

            if(in[a[q][i]]==0)
            {
                hsy.push(a[q][i]);
                printf("%d ",a[q][i]);
            }
        }
    }
    puts("");

}
int main()
{
    cin>>n;

    for(int i=1; i<=n; i++)
    {
        int m;
        while(cin>>m)
        {
            if(!m)
                break;
            a[i].push_back(m),in[m]++;///a【i】【m】 是i的子孙 in【m】表示他有几个祖先
        }
    }
    topu();

}
全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务