博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cogs——619. [金陵中学2007] 传话
阅读量:6798 次
发布时间:2019-06-26

本文共 2079 字,大约阅读时间需要 6 分钟。

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

 

思路:tarjan判环

代码:

 

#include
#include
#include
#include
#include
#define N 10101using namespace std;bool vis[N];int n,m,x,y,tim,top,tot,sum;int low[N],ans[N],dfn[N],stack[N],head[N],belong[N];int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1; ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();} return x*f;}struct Edge{ int from,to,next;}edge[N];int add(int x,int y){ tot++; edge[tot].to=y; edge[tot].next=head[x]; head[x]=tot;}int tarjan(int now){ dfn[now]=low[now]=++tim; stack[++top]=now,vis[now]=true; for(int i=head[now];i;i=edge[i].next) { int t=edge[i].to; if(vis[t]) low[now]=min(low[now],dfn[t]); else if(!dfn[t]) tarjan(t),low[now]=min(low[now],low[t]); } if(dfn[now]==low[now]) { sum++;belong[now]=sum;ans[sum]++; for(;stack[top]!=now;top--) { int t=stack[top];ans[sum]++; belong[t]=sum;vis[t]=false; } vis[now]=false; top--; }}int main(){ freopen("messagez.in","r",stdin); freopen("messagez.out","w",stdout); n=read(),m=read(); for(int i=1;i<=m;i++) x=read(),y=read(),add(x,y); for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i); for(int i=1;i<=n;i++) if(ans[belong[i]]>1) printf("T\n"); else printf("F\n"); return 0;}

 

转载于:https://www.cnblogs.com/z360/p/7426584.html

你可能感兴趣的文章
[原创]项目管理知识体系指南之 4项目整合管理思维导图
查看>>
经典网页设计:20个华丽的 iPhone 应用程序演示网站
查看>>
Flash:DisplayObject的transform/matrix的潜规则、小bug
查看>>
汗,Google又调整了编译工具(升级SDK先备份!!!)
查看>>
iOS 里RGB 配色 UIColor colorWithRed
查看>>
Windows环境下用C#编程将文件上传至阿里云OSS笔记
查看>>
android 读取SQLite android could not open the database in read/write mode错误
查看>>
构建高性能的ASP.NET应用程序
查看>>
抽离CodeIgniter的数据库访问类 可以独立使用
查看>>
android 关于InputDispatcher出现Consumer错误的解决办法
查看>>
Tomcat全攻略
查看>>
转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程
查看>>
Razor视图引擎 语法
查看>>
JAVA Map 和 List 排序方法
查看>>
快速构建Windows 8风格应用34-构建Toast通知
查看>>
GridView Print and Print Preview
查看>>
PL/SQL之--包
查看>>
SEOer怎样安排一天的工作
查看>>
深入学习golang(4)—new与make
查看>>
就近期面试所见,谈谈求职者的问题和面试官的问题
查看>>