Ice_cream's world I

                                                  Ice_cream's world I

原题链接 http://acm.hdu.edu.cn/showproblem.php?pid=2120

ice_cream's world is a rich country, it has many fertile lands. Today, the queen of ice_cream wants award land to diligent ACMers. So there are some watchtowers are set up, and wall between watchtowers be build, in order to partition the ice_cream’s world. But how many ACMers at most can be awarded by the queen is a big problem. One wall-surrounded land must be given to only one ACMer and no walls are crossed, if you can help the queen solve this problem, you will be get a land.

Input

In the case, first two integers N, M (N<=1000, M<=10000) is represent the number of watchtower and the number of wall. The watchtower numbered from 0 to N-1. Next following M lines, every line contain two integers A, B mean between A and B has a wall(A and B are distinct). Terminate by end of file.

Output

Output the maximum number of ACMers who will be awarded. 
One answer one line.

Sample Input

8 10
0 1
1 2
1 3
2 4
3 4
0 5
5 6
6 7
3 6
4 7

Sample Output

3

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

int n,m,f[1010];

void init()//初始化
{
    for(int i=0; i<=n; i++)
    {
        f[i]=i;
    }
}

int getf(int v)
{
    if(v!=f[v])
    {
        f[v]=getf(f[v]);
    }
    return f[v];
}

int merge(int u,int v)
{
    int t1=getf(u);
    int t2=getf(v);
    if(t1!=t2)//进行合并
    {
        f[t1]=t2;
        return 0;
    }
    return 1;
}

int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        init();
        int a,b;
        int ans=0;//记录环的数量,切记清零
        for(int i=0; i<m; i++)
        {
            scanf("%d%d",&a,&b);
            ans+=merge(a,b);//merge若是环便返回1,反之为0.
        }
        printf("%d\n",ans);
    }
    return 0;
}

在王国中,要建立许多瞭望塔,瞭望塔之间的连接处有围墙。给出n个瞭望塔和各个塔之间的围墙数m。并给出m组a,b表示两者间有围墙连接,求哨塔和围墙把土地分割成了几个部分。并查集问题,并查集成环,找出环的个数便是土地的个数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题可以回答。以下是Python 代码,帮您将25个句子按十折划分为训练集、验证集、测试集并写入TXT文件: ``` import random # 定义句子列表 sentences = [ "The quick brown fox jumps over the lazy dog.", "She sells seashells by the seashore.", "I scream, you scream, we all scream for ice cream.", "To be or not to be, that is the question.", "All the world's a stage, and all the men and women merely players.", "The cat in the hat came back.", "I have a dream that one day this nation will rise up and live out the true meaning of its creed.", "Four score and seven years ago our fathers brought forth on this continent a new nation.", "Ask not what your country can do for you, ask what you can do for your country.", "In the beginning God created the heavens and the earth.", "A penny saved is a penny earned.", "Give me liberty or give me death.", "There is no place like home.", "Houston, we have a problem.", "Beam me up, Scotty.", "May the Force be with you.", "I'll be back.", "There's no crying in baseball.", "You can't handle the truth!", "Here's looking at you, kid.", "You talking to me?", "Frankly, my dear, I don't give a damn.", "Toto, I've got a feeling we're not in Kansas anymore.", "Show me the money!", "You had me at hello." ] # 打乱句子列表 random.shuffle(sentences) # 计算十折划分后每个集合的大小 num_folds = 10 subset_size = len(sentences) // num_folds # 划分集合并写入文件 for i in range(num_folds): test_start = i * subset_size test_end = (i + 1) * subset_size test_set = sentences[test_start:test_end] train_valid_set = sentences[:test_start] + sentences[test_end:] random.shuffle(train_valid_set) valid_set = train_valid_set[:subset_size] train_set = train_valid_set[subset_size:] with open(f"fold_{i+1}_train.txt", "w") as f: f.write("\n".join(train_set)) with open(f"fold_{i+1}_valid.txt", "w") as f: f.write("\n".join(valid_set)) with open(f"fold_{i+1}_test.txt", "w") as f: f.write("\n".join(test_set)) ``` 上面代码中,我们首先定义了一个包含25个不同句子的列表。然后随机打乱这个列表,接着计算集合大小并进行十折划分。最后,我们将每个集合写入文件,并以 "fold_i_" 命名文件以表示是哪一个折。例如,第一个折的训练集就是名为 "fold_1_train.txt" 的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值