• 长春理工大学第十四届程序设计竞赛(重现赛)L


    L.Homework Stream

    题目链接:https://ac.nowcoder.com/acm/contest/912/L

    题目


    作为大珩班尖子生,小r每天有很多作业要完成,例如工图、工图和工图。

    很显然,做作业是要有顺序的。作业之间存在依赖关系,某一个作业没做完,就不能开始做另一个作业。例如,汇编作业依赖于C语言作业,因为小r可以用C语言的编译结果反编译出他想要的汇编程序。

    现在已知有n种作业(编号为1~n)和m对作业之间的依赖关系,小r想知道编号为k的作业依赖于哪些作业,以及哪些作业依赖于编号为k的作业。
    输入描述:

    第一行输入三个正整数n,m,k(1≤n,m,k≤106)

    ,含义见题目描述。

    接下来m行,每行两个正整数xi,yi(1≤xi,yi≤106),代表作业xi依赖于yi



    输入保证不存在重复的依赖关系,也不存在环形的依赖关系。

    输出描述:

    输出共两行。

    第一行输出编号为k的作业依赖的作业编号,每个数用空格隔开。

    第二行输出依赖于编号为k的作业的编号,每个数也用空格隔开。

    每行输出的作业编号顺序任意。

    示例1
    输入
    5 4 3
    3 1
    3 2
    4 3
    5 3

    输出
    1 2
    4 5

    示例2
    输入
    3 2 1
    2 1
    3 2

    输出
    2

    说明

    如果没有依赖或被依赖的作业,也要输出空行(即必须一共输出两个换行符)

    备注:

    依赖关系不满足传递性,即你无需考虑间接的依赖关系。

    思路

    水题,判断存入数组就行

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
     
        int n,m,k;
        vector<int>sh,ch;
        while(cin>>n>>m>>k)
        {
            int a,b;
         for(int i=0;i<m;i++)
         {
             cin>>a>>b;
             if(a==k)
                 sh.push_back(b);
             else if(b==k)
                 ch.push_back(a);
         }
         if(!sh.size())
             cout<<endl;
         if(sh.size())
         {
             copy(sh.begin(),sh.end(),ostream_iterator<int>(cout," "));
             cout<<endl;
         }
        if(!ch.size())
            cout<<endl;
        if(ch.size())
        {
            copy(ch.begin(),ch.end(),ostream_iterator<int>(cout," "));
            cout<<endl;
        }
        sh.clear();
        ch.clear();
        }
        return 0;
    }
    
  • 相关阅读:
    用mescroll实现无限上拉增加数据,下拉刷新数据 (学习笔记)
    jackson使用问题:mapper.readValue()将JSON字符串转反序列化为对象失败或异常
    常用 NHibernate.Criterion
    Threading
    并口
    电子称 弹钱箱脉冲
    ZIP文件解压
    wpf 异步加载 只需6段代码
    Newtonsoft.Json使用
    接口post +json +bean
  • 原文地址:https://www.cnblogs.com/Vampire6/p/10992451.html
Copyright © 2020-2023  润新知