摘要:
Kruskal算法(加边法) 思路: 首先对边的权值从小到大进行排序,而后遍历查看每一条边,循环以下步骤: 1)若该边两端顶点分属不同连通分量,则将此边加入,之后将其两端顶点合并为同一个连通分量; 2)若该边两端顶点已属于同一连同分量,则舍弃,继续查看下一条权值最小的边。 Code: #includ 阅读全文
摘要:
拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,该排序满足这样的条件——对于图中的任意两个结点u和v,若存在一条有向边从u指向v,则在拓扑排序中u一定出现在v前面。 当且仅当一个有向图为有向无环图(DAG)时才存在 阅读全文
摘要:
题意 有N(1<=N<=5000)个点,m条边(1<=M<=50000)。起点可以是任何一个入度为0的点,终点是N。求从起点到终点的所有路中,经过次数最大的一条路。输出经过次数。(规定每个点需要连接到编号更大的点,且不存在循环) 题解 该图为DAG(有向无环图),可利用拓扑排序,正反向建图分别进行两 阅读全文
摘要:
直接上代码 阅读全文
摘要:
strstr(T,S) 函数: 这是一个字符串处理函数,用于判断字符串S是否是字符串T的子串。如果是,则该函数返回S在T中首次出现的地址;否则,返回NULL。 头文件:#include <string.h> 函数原型:char *strstr(const char *str1, const char 阅读全文
摘要:
函数调用传递实参的两种做法: 补充: int x=5;int *y=&x; //用于指针传递,y有自己独立的内存地址,存储的内容是x的地址,*y是x的值,即*y等于5。int &z=x; //用于引用传递,就是使z成为x的别名,修改其中任意一个另一个的值也会随之改变。 阅读全文
摘要:
题目传送门 题意 T组案例,每组案例:n个灯泡(from 0 to n-1),m次操作,每次操作把区间[L,R]内的灯泡翻转(开变关,关变开),问m次操作之后有多少灯泡是亮着的。(时间限制:1000ms 内存限制:8192K) 题解 这道题不仅卡时间,更是卡内存,所以用线段树会爆内存 正解: 该题可 阅读全文
摘要:
链式前向星比vector邻接表在内存性能和时间性能上更好。 链式前向星用法详见以下模板代码: 阅读全文
摘要:
传送门 题意 有V个灭火点(数字1到V),这些灭火点有E条道路相互连通。现有一个消防英雄在点S,消防队分布在K个点,比较消防英雄到各个灭火点的最短路的最大值乘以系数1/C的值和消防队到各个灭火点的最短路的最大值,较小的一个获胜,输出获胜一方的最短路的最大值(若为消防英雄则输出不乘以1/C的值,平局也 阅读全文
摘要:
题目 题解 这题用单纯的广搜能得到从起点到终点的最少步数,但费用却不一定是最小的,故需要在广搜的基础上加上优先队列解决。 Code 阅读全文