
数据结构
加油
河林山
这个作者很懒,什么都没留下…
展开
-
做过的例题吧
以下皆是vjudge网站上所做 POJ - 2236 UVA - 10099 POJ - 1611(个体数量) UVA - 11987(删除操作) HDU - 1272(小希的迷宫) POJ - 1182(食物链 )原创 2021-08-02 18:01:05 · 163 阅读 · 0 评论 -
KD-Graph HDU - 6958(多校第一场)
题目:KD-Graph vjudge提交链接 题意: n个顶点,给出m条边的信息。现在问是否存在一个最小的D值恰好使原图变为k个连通的部分。 如何通过改变D值使原本不是k个连通的部分变为k个连通部分呢。 因为题目中给出了点与点连通的定义。 若顶点p和q (p≠q)连通,则p和q之间必须至少有一条路径满足这条路径的最大值小于或等于D。 若点p和q (p≠q)在不同的组中, 则p和q之间不可能有任何路径满足这条路径的最大值小于或等于D 看样例说问题吧。 样例1的图: ...原创 2021-07-21 09:51:57 · 230 阅读 · 0 评论 -
小希的迷宫(简单并查集)
题目:小希的迷宫 vjudge提交链接 题意: ——小希现在给你一张图(无向边),让你判断任意两个房间是否有且仅有一条路径可以相通(除非走了回头路)。 代码: #include<stdio.h> #include<string.h> #define N 100005 int f[N],book[N]; int flag; int find(int x) { if(x!=f[x]) f[x]=find(f[x]); return f[x]; } void merge(int x原创 2021-05-18 09:50:10 · 299 阅读 · 0 评论 -
食物链(三倍空间并查集)
题目:食物链 vjudge提交链接 题意: ——3种动物A,B,C,存在以下关系:A吃B, B吃C,C吃A。 输入:N个动物,m句话,每句话表示动物x和y的关系。 判断m句话中有多少句是假的。 ——假话的情况: 1) 当前的话与前面的某些真的话冲突,就是假话; 2) 当前的话中X或Y比N大,就是假话; 3) 当前的话表示X吃X,就是假话。 题解:(勿看,不完整) 在未知晓动物之间关系时,n个动物可能都属于物种A,也可能都属于物种B,还可能都属于物种C。因此导出初始化,规定1 ~ n为物种A,n+1 ~ 2原创 2021-05-18 09:39:09 · 610 阅读 · 0 评论 -
求某人所在集体的个数
题目: The Suspects vjudge提交链接 密码:ayit606 题意:(盗图) 解题思路: 先忽略疑似患病是某某某。 重新分配团体,使得一个人只属于一个团体,并查集的合并。题目中所给的团体只能说明团体内成员互相认识。 找0号人所在团体,找他们的老大询问该团体的人数,当然也只有老大知道该集体人数。 代码: //vis[i]表示i号手下有多少人(包括自己) //f[i]=k表示的i号的老大为k #include<stdio.h> #define N 30001 int f[N]原创 2021-05-05 11:10:49 · 103 阅读 · 0 评论