619. [金陵中学2007] 传话

★☆   输入文件:messagez.in   输出文件:messagez.out   简单对比

时间限制:1 s   内存限制:128 MB

[问题描述]

兴趣小组的同学来自各个学校,为了增加友谊,晚会上又进行了一个传话游戏,如果 a 认识 b ,那么 a 收到某个消息,就会把这个消息传给 b ,以及所有 a 认识的人。

如果 a 认识 b , b 不一定认识 a 。

所有人从 1 到 n 编号,给出所有“认识”关系,问如果 i 发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了 i , 1<=i<=n 。

[输入文件]

输入文件 message.in 中的第一行是两个数 n(n<1000) 和 m(m<10000) ,两数之间有一个空格,表示人数和认识关系数。

接下来的 m 行,每行两个数 a 和 b ,表示 a 认识 b 。 1<=a, b<=n 。认识关系可能会重复给出,但一行的两个数不会相同。

[输出文件]

输出文件 message.out 中一共有 n 行,每行一个字符 T 或 F 。第 i 行如果是 T ,表示 i 发出一条新消息会传回给 i ;如果是 F ,表示 i 发出一条新消息不会传回给 i 。

[输入样例]

4 6
1 2 
2 3 
4 1 
3 1 
1 3 
2 3

[输出样例]




F

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stack>

using namespace std;
const int N = 1e5 + 10;
const int M = 1e4 + 10;

int head[N], low[N], dfn[N],tmp_ls[N];
bool is[N], vis[N];
int n, m, now = 1, dfs_clock, tmp_js;
struct Node{
	int u, v, nxt;
}E[M];
stack <int> S;

inline int read()
{
	int x = 0; char c = getchar();
	while(c < ‘0‘ || c > ‘9‘)c = getchar();
	while(c >= ‘0‘ && c <= ‘9‘)x = x * 10 + c - ‘0‘, c = getchar();
	return x;
}

inline void add(int u, int v)
{
	E[now].u = u;
	E[now].v = v;
	E[now].nxt = head[u];
	head[u] = now ++;
}

void Tarjan(int x)
{
	low[x] = dfn[x] = ++ dfs_clock;
	S.push(x);
	vis[x] = 1;
	for(int i = head[x]; ~ i; i = E[i].nxt)
	{
		int v = E[i].v;
		if(!dfn[v])
		{
			Tarjan(v);
			low[x] = min(low[x], low[v]);
		}
		else if(vis[v])
			low[x] = min(low[x], dfn[v]);
	}
	if(low[x] == dfn[x])
	{
		tmp_js = 0;
		while(x != S.top())
		{
			tmp_ls[++ tmp_js] = S.top();
			vis[S.top()] = 0;
			S.pop();
		}
		tmp_ls[++ tmp_js] = S.top();
		vis[S.top()] = 0;
		S.pop();
		if(tmp_js > 1)
			for(int i = 1; i <= tmp_js; i ++)
				is[tmp_ls[i]] = 1;
	}
}

int main()
{
	freopen("messagez.in", "r", stdin);
	freopen("messagez.out", "w", stdout);
	n = read();
	m = read();
	for(int i = 1; i <= n; i ++)
		head[i] = -1;
	for(int i = 1; i <= m; i ++)
	{
		int u = read();
		int v = read();
		add(u,v);
	}
	for(int i = 1; i <= n; i ++)
		if(!dfn[i])
			Tarjan(i);
	for(int i = 1; i <= n; i ++)
		if(is[i] == 1)
			printf("T\n");
		else
			printf("F\n");

	return 0;
}

  

时间: 2024-10-29 19:05:59

619. [金陵中学2007] 传话的相关文章

cogs 619. [金陵中学2007] 传话

提交地址:http://cojs.tk/cogs/problem/problem.php?pid=619 619. [金陵中学2007] 传话 ★☆   输入文件:messagez.in   输出文件:messagez.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 兴趣小组的同学来自各个学校,为了增加友谊,晚会上又进行了一个传话游戏,如果 a 认识 b ,那么 a 收到某个消息,就会把这个消息传给 b ,以及所有 a 认识的人. 如果 a 认识 b , b 不一

翻转课堂

翻转课堂 翻转课堂译自“Flipped Classroom”或“Inverted Classroom”,是指重新调整课堂内外的时间,将学习的决定权从教师转移给学生.在这种教学模式下,课堂内的宝贵时间,学生能够更专注于主动的基于项目的学习,共同研究解决本地化或全球化的挑战以及其他现实世界面临的问题,从而获得更深层次的理解.教师不再占用课堂的时间来讲授信息,这些信息需要学生在课后完成自主学习,他们可以看视频讲座.听播客.阅读功能增强的电子书,还能在网络上与别的同学讨论,能在任何时候去查阅需要的材料.

2017年美国名校录取中国大陆学生数据汇总

2017年美国名校录取中国大陆学生数据汇总 留学问多点2016-12-29 12:01:59名校 美国阅读(941)评论(0) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 2017年美国大学入学的早申EA/ED学校已基本放榜.本文收集统计了几大名校在大陆的录取情况.数据来自于各学校公布的录取结果和经过验证的留学中介,数据可能会与实际情况有所出入,但是基本能够反映出美国藤校在中国大学录取的基本情况.可供各位计划读美本的学生家长们作参考. "

access 2007 vba 开发中学到的知识

使用ado连接本身的数据库,需要先创建一个 adodb.connection的连接对象 Set cn = CreateObject("ADODB.Connection") 数据库的提供者 cn.Provider = "Microsoft.ACE.OLEDB.12.0" CurrentProject.Path是取得当前access数据库程序所在的路径 strCn = "Data Source = " & CurrentProject.Pat

access 2007 vba 开发中学到的知识(二)

文件的导入和导出 excel 'excel导入Private Sub btnInExcel_Click() Dim strSelectFile As StringWith Application.FileDialog(3) .AllowMultiSelect = False .InitialFileName = "" .Filters.Clear .Filters.Add "EXCEL文件", "*.xls" If .Show = -1 Then

access 2007 vba 开发中学到的知识(三)

打开文件或程序 'API函数声明Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nSh

Up to 8% free bonus for runescape 2007 gp on Rsorder as july best gift&Enjoy Telos During 7.1-7.22

Now, a small band of freedom fighters struggle to end the osrs gold  long, dark night of Daein's oppression. The big blog news of the day is that Vox Media has acquired Curbed Network. As an amulet you should be wearing an amulet of glory and if you

FDA Approves First Hepatitis B Viral Load Test on 2007

FDA Approves First Hepatitis B Viral Load Test Another Roche first in TaqMan real-time PCR testing for the diagnostic lab The U.S. Food & Drug Administration (FDA) has approved the Roche COBAS TaqManHBV Test, the first assay for quantitating hepatiti

【图论】Self-Assembly(6-19)

[UVA1572]Self-Assembly 算法入门经典第6章6-19(P172) 题目大意:有一些正方形,每条边上都有A-~Z- A+~Z+的编号,或者00,A+的边可以拼A-,反之亦然.00的边什么都不能拼.问是否能无限去拼. 试题分析:直接做没有头绪,但是发现可以旋转和翻转,这样就可以从任意正方形喀什了.我们将A-~Z+这52种连有向边,最后判断有没有有向环即可. #include<iostream> #include<cstring> #include<cstdio