您的位置:首页 > 其它

2013暑假集训第二天下午总结

2013-07-16 15:33 302 查看
比赛地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26100#rank

都是些陈题,好多以前做过了都。

A:问第一个字符串是不是第二个的子串(非连续也可以)

直接遍历一边就行了。

#define maxn 30005
int father[maxn];
int n,m;

int find(int x )
{
if(x == father[x] ) return x;
father[x] = find(father[x]) ;
return father[x];
}
void unit(int u,int v)
{
father[find(v)] = find(u);
}
void init()
{
for(int i = 0 ; i < maxn ; i ++ )  father[i] = i ;
}
int main()
{
int tn,db;
int x ;
while(scanf("%d%d",&n,&m)!=EOF && !(m == 0 && n == 0))
{
init();
for(int i = 0 ; i < m ; i ++ )
{
scanf("%d",&tn);
if(tn == 0 ) continue ;
tn -- ;
scanf("%d",&db);
for(int j = 0 ; j < tn ; j ++ )
{
scanf("%d",&x);
unit(db,x);
}
}
int tt;
tt = find(0);
int ans ;
ans = 1 ;
for(int i = 1; i < n ;i ++ )
{
if(find(i) == tt)
{
ans ++ ;
}
}
printf("%d\n",ans);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: