欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 语言月赛 202407【significance】题解(AC)

语言月赛 202407【significance】题解(AC)

2025/1/16 17:30:29 来源:https://blog.csdn.net/m0_65641514/article/details/145159961  浏览:    关键词:语言月赛 202407【significance】题解(AC)

在这里插入图片描述
》》》点我查看「视频」详解》》》

[语言月赛 202407] significance

题目背景

从前有个荣光的王国,小 A 是里面的国王,他认为人活着需要有意义,所以今天他要赐予他的子民以意义。

题目描述

细心的小 A 发现,每个人的存在对于其他人来说都有着不可取代的意义。一个人的意义值定义为他的朋友朋友的朋友的个数。

小 A 的王国共有 n n n 位居民,以 1 , 2 , ⋯ , n 1, 2, \cdots, n 1,2,,n 编号。每位居民分别有 x i x_i xi 个朋友,现在小 A 想知道每位居民的意义值。

注意,朋友关系可能是单向的。即:有可能 a a a b b b 当朋友,但 b b b 不一定把 a a a 当作朋友。同时,如果一个人的朋友的朋友中有自己,则这一部分的个数不统计。

时光荏苒,朋友的联系也会散去。而我们和一个人保持连接的方式就是记住,仅此而已。

输入格式

第一行一个整数 n n n 表示小 A 王国的居民数。

接下来 n n n 行每行 x i + 1 x_i + 1 xi+1 个整数。第一个整数 x i x_i xi 表示 i i i 号居民有几个朋友,接下来 x i x_i xi 个整数分别表示他的朋友的编号。

输出格式

一行 n n n 个整数分别表示每位居民的意义值。

样例 #1

样例输入 #1

4
2 2 3
1 4
0
0

样例输出 #1

3 1 0 0

样例 #2

样例输入 #2

3
0
2 1 3
0

样例输出 #2

0 2 0

样例 #3

样例输入 #3

3
1 2
1 3
1 1

样例输出 #3

2 2 2

提示

样例 1 解释

  • 1 1 1 号居民认为他的朋友是 2 2 2 3 3 3 3 3 3 认为自己没有朋友,但 2 2 2 认为自己有一个朋友 4 4 4, 所以 1 1 1 号居民的意义值是 3 3 3
  • 2 2 2 号居民认为他的朋友是 4 4 4 4 4 4 没有朋友,所以 2 2 2 号居民的意义值是 1 1 1
  • 3 3 3 号和 4 4 4 号居民都认为自己没有朋友,所以他们的意义值是 0 0 0

样例 2 解释

  • 1 1 1 号和 3 3 3 号居民认为他们没有朋友,所以他们的意义值是 0 0 0
  • 2 2 2 号居民的朋友是 1 1 1 3 3 3 1 , 3 1,3 1,3 都认为自己没有朋友,所以 2 2 2 号居民的意义值是 2 2 2

样例 3 解释

  • 1 1 1 号居民认为他的朋友是 2 2 2, 2 2 2 认为他的朋友是 3 3 3,所以 1 1 1 号居民的意义值是 2 2 2
  • 2 2 2 号居民的朋友是 3 3 3 3 3 3 认为自己的朋友是 1 1 1,所以 2 2 2 号居民的意义值是 2 2 2
  • 3 3 3 号居民的朋友是 1 1 1 1 1 1 认为自己的朋友是 2 2 2,所以 3 3 3 号居民的意义值是 2 2 2

数据范围

  • 对于 20 % 20\% 20% 的数据, x i ≤ 1 x_i \le 1 xi1
  • 对于另外 20 % 20\% 20% 的数据,除 x 1 = n − 1 x_1 = n - 1 x1=n1 外, x i = 0 x_i = 0 xi=0
  • 对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 100 1 \le n \le 100 1n100 0 ≤ x i ≤ n 0 \le x_i \le n 0xin。保证每一行除第一个数外的其他整数 c c c 均有 1 ≤ c ≤ n 1 \leq c \leq n 1cn 且两两不同。
  • 数据保证不会出现「一个人是自己的朋友」,或者「一个人既是另一个人的朋友,又是他朋友的朋友」的情况。

AC_Code

#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int t[N]; // t[i] 表示i有多少个朋友
int g[N][N]; // g[i][j] 表示第i个居民的第j个朋友是谁
bool st[N];int main()
{int n;cin >> n;for(int i = 1; i <= n; i ++){cin >> t[i];for(int j = 0; j < t[i]; j ++){cin >> g[i][j];}}for(int i = 1; i <= n; i ++){memset(st, 0, sizeof st);int ans = 0;for(int j = 0; j < t[i]; j ++){int x = g[i][j];st[x] = true;for(int k = 0; k < t[x]; k ++){int y = g[x][k];st[y] = true;}}for(int j = 1; j <= n; j ++)if(i != j && st[j])ans ++;cout << ans << " ";}return 0;
}

》》》点我查看「视频」详解》》》

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com