codevs 1506 传话 题解

Codevs 1506传话 题解

1506 传话——这个题目的解法很多,你能想到几种?
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 白银 Silver
题解
题目描述 Description
一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b,以及所有a认识的人。
如果a认识b,b不一定认识a。
所有人从1到n编号,给出所有“认识”关系,问如果i发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了i,1<=i<=n。
输入描述 Input Description
第一行是n和m,表示人数和认识关系数。
接下来的m行,每行两个数a和b,表示a认识b。1<=a, b<=n。认识关系可能会重复给出,但一行的两个数不会相同。
 
输出描述 Output Description
一共n行,每行一个字符T或F。第i行如果是T,表示i发出一条新消息会传回给i;如果是F,表示i发出一条新消息不会传回给i。
 
样例输入 Sample Input
4 6
1 2
2 3
4 1
3 1
1 3
2 3
样例输出 Sample Output
T
T
T
F
数据范围及提示 Data Size & Hint
n<=1000
1<=a,b<=n
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
 
int n,m,a,b,i,j,k,num,ans;
int t[1002][1002];
int main(){
	ans=0;

	cin >> n;
	for(i=1;i<=n;i++)
	    for(j=1;j<=n;j++)
		t[i][j]=0;
	cin >> m;
	for(i=1;i<=m;i++)
	{
		cin>>a>>b;
		t[a][b]=1;
	}

	for(k=1;k<=n;k++)
	    for(i=1;i<=n;i++)
	        for(j=1;j<=n;j++)
	        if(t[i][k]&&t[k][j])
			    t[i][j]=1;

	for(i=1;i<=n;i++)   
	if(t[i][i])
	    cout << ‘T‘ << endl;
	    else cout << ‘F‘ << endl;

 
    return 0;
}

认真读题 认真读题 认真读题

弗洛伊德算法 注意输出格式

时间: 2024-12-28 19:10:55

codevs 1506 传话 题解的相关文章

codevs 1506 传话

这题仿佛暴力都能过...我还是写的tarjan. 纯粹是裸的找环,每个点所属的强连通分量只要大于一个点,依据定义就肯定有环. #include<iostream>#include<cstdio>#include<stack>#include<vector>#include<cstring>#define maxv 1005#define maxe 100005using namespace std;stack <int> s;int

靶形数独 (codevs 1174)题解

[问题描述] 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教,Z 博士拿出了他最近发明的“靶形数独”,作为这两个孩子比试的题目.靶形数独的方格同普通数独一样,在 9 格宽×9 格高的大九宫格中有9 个3 格宽×3 格高的小九宫格(用粗黑色线隔开的).在这个大九宫格中,有一些数字是已知的,根据这些数字,利用逻辑推理,在其他的空格上填入1 到9 的数字.每个数字在每个小九宫格内不能重复出现,

【基础练习】【传递闭包】codevs1506 传话题解

题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b,以及所有a认识的人. 如果a认识b,b不一定认识a. 所有人从1到n编号,给出所有"认识"关系,问如果i发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了i,1<=i<=n. 输入描述 Input Description 第一行是n和m,表示人数和认识关系数. 接下来的m行,每行两个数a和b,表示a认识b.1<=a, b<=n.认识关系可

【基础练习】codevs1506 传话题解

题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b,以及所有a认识的人. 如果a认识b,b不一定认识a. 所有人从1到n编号,给出所有"认识"关系,问如果i发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了i,1<=i<=n. 输入描述 Input Description 第一行是n和m,表示人数和认识关系数. 接下来的m行,每行两个数a和b,表示a认识b.1<=a, b<=n.认识关系可

邮票面值设计(codevs 1047) 题解

[问题描述] 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之间的每一个邮资值都能得到.例如,N=3,K=2,如果面值分别为1分.4分,则在1分-6分之间的每一个邮资值都能得到(当然还有8分.9分和12分):如果面值分别为1分.3分,则在1分-7分之间的每一个邮资值都能得到.可以验证当N=3,K=2时,7分就是可以得到的连续的邮资最大值,所以MAX=7,面值分别为1分.3分. [

合并果子 (codevs 1063) 题解

[问题描述] 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了.多多在合并果子时总共消耗的体力等于每次合并所耗体力之和. 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力.假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体

货车运输(codevs 3287)题解

[问题描述] A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物. [样例输入] 4 3     1 2 4     2 3 3     3 1 1     3    1 3     1 4     1 3 [样例输出] 3    -1    3 [解题思路] 本题为NOIP2013提高组day1第三题,首先我们可以看出这是一道求最大生成树的问题

黑白棋游戏 (codevs 2743)题解

[问题描述] 黑白棋游戏的棋盘由4×4方格阵列构成.棋盘的每一方格中放有1枚棋子,共有8枚白棋子和8枚黑棋子.这16枚棋子的每一种放置方案都构成一个游戏状态.在棋盘上拥有1条公共边的2个方格称为相邻方格.一个方格最多可有4个相邻方格.在玩黑白棋游戏时,每一步可将任何2个相邻方格中棋子互换位置.对于给定的初始游戏状态和目标游戏状态,编程计算从初始游戏状态变化到目标游戏状态的最短着棋序列. [样例输入] 1111 0000 1110 0010 1010 0101 1010 0101 [样例输出] 4

敲砖块(codevs 1257)题解

[问题描述] 在一个凹槽中放置了 n 层砖块.最上面的一层有n 块砖,从上到下每层依次减少一块砖.每块砖都有一个分值,敲掉这块砖就能得到相应的分值,如下图所示.14 15 4 3 23 33 33 76 2   2 13 11    22 23      31如果你想敲掉第 i 层的第j 块砖的话,若i=1,你可以直接敲掉它:若i>1,则你必须先敲掉第i-1 层的第j 和第j+1 块砖.你现在可以敲掉最多 m 块砖,求得分最多能有多少. [样例输入] 4 5   2 2 3 4   8 2 7