2017-杭州cccc

13号晚和童鞋一起从学校叫车去了火车站,下楼之前的十分钟还在玩阴阳师,表示肝疼。。

然后在火车站旁边吃了些kfc就上火车了,免费旅游的感觉还是美滋滋的。

火车上和隔壁某学校的童鞋在同一趟车,然后看到了传说中的拿了金牌的妹子,感觉自己真的是菜得抠脚。

火车大概坐了20+个小时抵达杭州,杭州绿化还是很漂亮的,很早就想到杭州看一看,没想到会以比赛的形式来到的杭州。

到的第一天,先去旅馆附近吃了一餐当地菜,感受了传说中的东坡肉,然而吃了后发现跟扣肉并没有什么区别。

第二天比赛的时候,一堆童鞋在食堂门口堵路等了好久的饭票,有点搞笑!

开始比赛的时候,做了几道简单题,感觉还是比较水,然后看了并查集那一题,花了挺多时间发现竟然做不出,自己的并查集还是理解太浅,

花了挺多时间也没找到问题,find1才是找其的根节点,而pre仅仅是找其父节点!!但最后还是靠骗数据过了一点分。

想想自己还是太菜,很多题都不会啊。

L2-024部落:

#include<iostream>
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include <map>
#include <set>
#include <queue>
#include <math.h>
#include <algorithm>
using namespace std;
int pre[10500];
void init(int n){
    for(int i=1;i<=n;i++)
        pre[i]=i;
}
int find1(int x){
    int y=x;
    while(x!=pre[x]){
        x=pre[x];
        }
    int z=y;
    while(pre[z]!=x){
        y=pre[z];
        pre[z]=x;
        z=y;
    }
        return x;
}
int find2(int x,int y){
    int c1=find1(x);
    int c2=find1(y);
    if(c1!=c2){
        pre[c2]=c1;
    }
}
bool walked[10500];
bool walked2[10500];
int main(){
    //freopen("in.txt","r",stdin);
    int i,j,k,f1,f2,f3,t1,t2,t3,n,m;
    cin >> n;
    init(10400);
    memset(walked,0,sizeof(walked));
    memset(walked2,0,sizeof(walked2));
    int max1=0;
    for(i=1;i<=n;i++){
        cin >> t1;
        cin >> t2;
        if(walked[t2]==0){
            max1++;
            walked[t2]=1;
        }
        for(j=2;j<=t1;j++){
            cin >> t3;
            if(walked[t3]==0){
                walked[t3]=1;
                max1++;
            }
            find2(t2,t3);
        }
    }
    cin >> m;
    f1=0;
    for(i=1;i<=10400;i++){
        if(walked[i]==1&&walked2[find1(i)]==0){
            f1++;
            walked2[find1(i)]=1;
        }
    }
    cout << max1 << " " << f1 << endl;
    for(j=1;j<=m;j++){
        cin >> t1 >> t2;
        if(find1(t1)!=find1(t2)){
            cout <<"N"<<endl;
        }else{
            cout << "Y" <<endl;
        }
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值