博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
COGS 1298. 通讯问题
阅读量:5057 次
发布时间:2019-06-12

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

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

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

【题目描述】

一个篮球队有n个篮球队员,每个队员都有联系方式(如电话、电子邮件等)。但并不是每个队员的联系方式都公开,每个队员的联系方式只有一部分队员知道。问队员可以分成多少个小组,小组成员之间可以相互通知(包括一个队员一个组,表示自己通知自己)。

【输入格式】

 

输入文件有若干行

第一行,一个整数n,表示共有n个队员(2<=n<=100)

下面有若干行,每行2个数a、b,a、b是队员编号,表示a知道b的通讯方式。

 

【输出格式】

 

输出文件有若干行

第一行,1个整数m,表示可以分m个小组,下面有m行,每行有若干个整数,表示该小组成员编号,输出顺序按编号由小到大。

 

【样例输入】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【样例输出】

 

 

8

1 2 3

4 6

5

7 8

9

10

11

12

 

 tarjan模板题

#include 
#include
#define N 10050void read(int &x){ x=0;bool f=0; register char ch=getchar(); for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=1; for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0'; x=f?(~x)+1:x;}struct Edge{ int next,to; Edge (int next=0,int to=0) :next(next),to(to) {}}edge[N<<1];bool vis[N],instack[N];int tim,sumcol,col[N],n,head[N<<1],cnt,dfn[N],low[N],stack[N],top;int min(int a,int b) {
return a>b?b:a;}void insert(int u,int v){ edge[++cnt]=Edge(head[u],v); head[u]=cnt;}void tarjan(int x){ dfn[x]=low[x]=++tim; instack[x]=true; stack[++top]=x; for(int i=head[x];i;i=edge[i].next) { int v=edge[i].to; if(!dfn[v]) { tarjan(v); low[x]=min(low[x],low[v]); } else if(instack[v]) low[x]=min(low[x],dfn[v]); } if(low[x]==dfn[x]) { sumcol++; int t; do { t=stack[top--]; instack[t]=false; col[t]=sumcol; }while(x!=t); }}int main(){ freopen("jdltt.in","r",stdin);freopen("jdltt.out","w",stdout); read(n);int x,y; while(scanf("%d%d",&x,&y)!=EOF) insert(x,y); for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i); printf("%d\n",sumcol); for(int i=1;i<=n;i++) { if(!vis[i]) { for(int j=i;j<=n;j++) { if(col[j]==col[i]) { vis[j]=1; printf("%d ",j); } } printf("\n"); } } return 0;}

 

转载于:https://www.cnblogs.com/ruojisun/p/7223908.html

你可能感兴趣的文章
C语言 · 出栈次序
查看>>
《Entity Framework 6 Recipes》中文翻译系列 (43) ------ 第八章 POCO之使用POCO加载实体...
查看>>
类的无参方法
查看>>
NSString的八条实用技巧
查看>>
Eclipse远程提交hadoop集群任务
查看>>
window Appserv 2.5.10 php版本升级 由5.2.6版本升级到php-5.3.27-Win32-VC9-x86版本
查看>>
Ubuntu 修改 Apache2 用户组 方法
查看>>
数据挖掘主要侧重解决的4类问题 (转载)
查看>>
Philips飞利浦 Sonicare E系列电动牙刷替换刷头
查看>>
Servlet Filter 示例
查看>>
手动项目发布流程
查看>>
删除代码中所有的空行
查看>>
Java Build Practice 4:Extend and Invoke Ant API
查看>>
java 格式化输出方法
查看>>
[转] Transformer图解
查看>>
SpringMVC_HelloWorld_03
查看>>
357. Count Numbers with Unique Digits
查看>>
POJ 3660Cow Contest
查看>>
FreeBSD方式安装 MAC OSX
查看>>
Linux 根文件系统制作
查看>>