Skip to content

Commit 0e7164b

Browse files
committed
发布更新带页码版本,增加和修改了少量内容
1 parent 6d63af9 commit 0e7164b

4 files changed

Lines changed: 276 additions & 49 deletions

File tree

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
**当前最新普通版发布版本为 `v1.0.5`****最新打印版发布版本为 `v1.0.0` (总词数约7.7w(含代码))**
1+
**当前最新普通版发布版本为 `v1.1.0`****最新打印版发布版本为 `v1.1.0` (总词数约9.0w(含代码))**
22

33
成品为 `template.pdf` (移步 [releases](https://github.com/lr580/algorithm_template/releases) 查看/下载)
44

5-
> 因打印版 `pdf` 目录页码制作困难,因此直到版本 `v1.1.0` 之前不会更新打印版,只会更新普通发布版
5+
> 因打印版 `pdf` 目录页码制作困难,因此直到版本 `v1.2.0` 之前不会更新打印版,只会更新普通发布版
66
77
<hr/>
88

@@ -46,6 +46,14 @@
4646

4747
## 更新日志
4848

49+
- 22/10/19 - 22/10/20 (`v1.1.0`)
50+
51+
- 添加了哈密顿图结论
52+
- 添加了划分数结论
53+
- 修改了点双连通分量参考代码
54+
- 添加了斐波那契数列等新的数学结论
55+
- 添加了竞赛图兰道定理等结论
56+
4957
- 22/09/01 - 22/10/18 (`v1.0.5`)
5058

5159
- 添加了边双连通分量例题

code/p1260_diff_constraints.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ signed main()
1111
for (ll i = 1, a, b, c; i <= m; ++i)
1212
{
1313
cin >> a >> b >> c;
14-
e[a].push_back({b, c});
14+
e[b].push_back({a, c});
1515
}
1616
for (ll i = 1; i <= n; ++i)
1717
{
@@ -29,7 +29,7 @@ signed main()
2929
for (auto pr : e[u])
3030
{
3131
ll v = pr.first, w = pr.second;
32-
if (d[u] + w < d[v])
32+
if (d[v] > d[u] + w)
3333
{
3434
d[v] = d[u] + w;
3535
if (!vis[v])
@@ -45,13 +45,14 @@ signed main()
4545
}
4646
}
4747
}
48+
ll mi = *min_element(d + 1, d + 1 + n);
4849
for (ll u = 1; u <= n; ++u)
4950
{
50-
cout << -d[u] << '\n';
51+
cout << d[u] - mi << '\n';
5152
for (auto pr : e[u])
5253
{
5354
ll v = pr.first, w = pr.second;
54-
assert(-d[u] - (-d[v]) <= w);
55+
assert(d[v] <= d[u] + w);
5556
}
5657
}
5758
return 0;

code/p8435_ppint_biconnect.cpp

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
using ll = long long;
4+
const ll mn = 5e5 + 10;
5+
ll n, m, dfn[mn], low[mn], st, stk[mn], stop, cn;
6+
vector<ll> c[mn], g[mn];
7+
void tarjan(ll u, ll fa)
8+
{
9+
ll son = 0;
10+
dfn[u] = low[u] = ++st;
11+
stk[++stop] = u;
12+
for (auto v : g[u])
13+
{
14+
if (!dfn[v])
15+
{
16+
++son;
17+
tarjan(v, u);
18+
low[u] = min(low[u], low[v]);
19+
if (low[v] >= dfn[u])
20+
{
21+
c[++cn].push_back(u);
22+
for (ll w = 0; w != v;)
23+
{
24+
w = stk[stop--];
25+
c[cn].push_back(w);
26+
}
27+
}
28+
}
29+
else
30+
{
31+
low[u] = min(low[u], dfn[v]);
32+
}
33+
}
34+
if (!fa && !son)
35+
{
36+
c[++cn].push_back(u);
37+
}
38+
}
39+
signed main()
40+
{
41+
cin.tie(0)->ios::sync_with_stdio(false);
42+
cin >> n >> m;
43+
for (ll i = 1, u, v; i <= m; ++i)
44+
{
45+
cin >> u >> v;
46+
g[u].push_back(v), g[v].push_back(u);
47+
}
48+
for (ll i = 1; i <= n; ++i)
49+
{
50+
if (!dfn[i])
51+
{
52+
stop = 0, tarjan(i, 0);
53+
}
54+
}
55+
cout << cn << '\n';
56+
for (ll i = 1; i <= cn; ++i)
57+
{
58+
cout << c[i].size() << ' ';
59+
for (auto u : c[i])
60+
{
61+
cout << u << ' ';
62+
}
63+
cout << '\n';
64+
}
65+
return 0;
66+
}

0 commit comments

Comments
 (0)