1 条题解
-
0
疫情流调
很基础的二维数组应用,如果二人有交集就把a[x][y]和a[y][x]都标记为1。本蘜蒻比较头疼的是输出+查重,这一部分实现的有点乱,凑合看看就好。
上代码
#include<bits/stdc++.h> using namespace std; bool a[105][105],pd[105],jl[105]; int n,m; int main() { cin>>n>>m; for(int i=1;i<=m;i++) { int x,y; cin>>x>>y; a[x][y]=1; a[y][x]=1; } for(int i=1;i<=n;i++) if(a[1][i]==1) { pd[i]=1; cout<<i<<" "; }//先输出密接,标记为已经输出过 for(int i=1;i<=n;i++) { if(a[1][i]==1) //如果当前的i为密接 { for(int j=2;j<=n;j++) //从2开始查找次密接(题目中说不需要输出1) if((a[i][j]==1)&&(pd[j]==0)) {//如果有接触并且没有被标记过 pd[j]=1;//标记为已经使用(当然这一行应该可以不要) jl[j]=1;//jl数组用于存放次密接,使用计数排序的思路,便于输出 } } } cout<<'\n'; for(int j=2;j<=n;j++) if(jl[j]==1) cout<<j<<" "; //输出次密接 return 0; }
- 1
信息
- ID
- 1128
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 41
- 已通过
- 20
- 上传者