NC26144. Homework Stream
描述
输入描述
第一行输入三个正整数,含义见题目描述。
接下来m行,每行两个正整数,代表作业依赖于。
输入保证不存在重复的依赖关系,也不存在环形的依赖关系。
输出描述
输出共两行。
第一行输出编号为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
输出:
<br/>2
说明:
如果没有依赖或被依赖的作业,也要输出空行(即必须一共输出两个换行符)C++14(g++5.4) 解法, 执行用时: 615ms, 内存消耗: 13664K, 提交时间: 2019-06-08 14:16:25
#include<bits/stdc++.h> using namespace std; long long int x[1000001],y[1000001]; int main() { int n,m,k,i; while(cin>>n>>m>>k) { if(n!=0&&m!=0&&k!=0) for(i=0;i<m;i++) {cin>>x[i]>>y[i]; } for(i=0;i<m;i++) if(x[i]==k) { printf("%lld ",y[i]); } cout<<endl; for(i=0;i<m;i++) if(y[i]==k) { cout<<x[i]<<" "; } cout<<endl; } }
C++11(clang++ 3.9) 解法, 执行用时: 332ms, 内存消耗: 6992K, 提交时间: 2019-06-08 12:53:05
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int x[N],y[N],n,m,k; int main() { cin>>n>>m>>k; for(int i=1;i<=m;i++) scanf("%d %d",&x[i],&y[i]); for(int i=1;i<=m;i++) if(x[i]==k) printf("%d ",y[i]); cout<<endl; for(int i=1;i<=m;i++) if(y[i]==k) printf("%d ",x[i]); cout<<endl; return 0; }