发现了一个大佬总结的好文章,准备按照她的路线进行学习
DFS/BFS
1106
统计层数和次数的时候,在判断里统计,不要在递归里
不然会很麻烦也会导致结果错误
注意更新最小层数时也要把次数还原
int n;
double p,r,sum;
int cnt=1,minl=999999;
vector node[110000];
void dfs(int root,int level){
if(node[root].size()==0){
if(level> n >> p >> r;
for(int i=0; i> k;
for(int j=0; j> h;
node[i].push_back(h);
}
}
dfs(0,0);
sum = p * pow((1+r*0.01),minl);
printf("%.04f %d\n",sum,cnt);
return 0;
}
1103
写递归,先写退出条件,然后根据推出条件看自己需要什么变量然后就传什么变量
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
1013
连通分量,不要想的太麻烦,自己总把简单题复杂化
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
最短路径(迪杰斯特拉)
1003
大佬的写法更简洁,多多理解
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
1030
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
欧拉图
1126
欧拉路径:所有路径都走且只走一遍,只有两个点的度数是奇数,其他都是偶数
欧拉回路:所有路径都走且只走一遍,所有点的度数都是偶数
欧拉图:含有欧拉回路的图
半欧拉图:含有欧拉路径的图
非欧拉图:除了不满足以上情况外,还可能所有点不在一个图上
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
哈密顿图
1122
哈密顿路径也称作哈密顿链,指在一个图中沿边访问每个顶点恰好一次的路径。
欧拉回路是指不重复的走过所有路径的回路
哈密尔顿环是指不重复地走过所有的点,并且最后还能回到起点的回路。
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int n,m,k,p;
int node[210][210];
int main()
{
cin >> n >> m;
for(int i=1; i<=m; i++){
int a,b;
cin >> a >> b;
node[a][b] = node[b][a] = 1;
}
cin >> k;
for(int i=0; i> p;
vector jud;
set ans;
int key1 = 1,key2 = 1;
for(int j=0; j> a;
ans.insert(a);
jud.push_back(a);
}
if(ans.size()n) key1 = 0;
for(int j=0; j
并查集
1107
#include
#include
#include
#include
#include
#include
#include
#include
#include
拓扑排序
1146