2013暑假集训第二天下午总结
2013-07-16 15:33
302 查看
比赛地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26100#rank
都是些陈题,好多以前做过了都。
A:问第一个字符串是不是第二个的子串(非连续也可以)
直接遍历一边就行了。
View Code
都是些陈题,好多以前做过了都。
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