abc243 E - Edge Deletion
题意:
给定无重边无自环的带正权无向连通图,问最多删除几条边能保持所有点对的最短距离不变
思路:
删除边 当且仅当原图中存在其它路径的长度小于等于 ,即存在中间点 ,使得
因为每次都在原图中找其他路径,所以(相比在删除若干边后的新图上找)找到的可能性是最大的。这样会不会删太多了?答案是不会,只需证明这样得到的子图符合题意:
考虑原图中 到 的最短路径中边数最多的那条,记为 。若 仅有一条边则 到 的距离没变,符合题意;若 不止一条边则把 拆成两部分,由归纳法可以证明符合题意
可以用 floyd 实现
const int N = 310;
int n, m, ans;
bool g[N][N]; //还有没有此边
ll d[N][N];
void sol() {
memset(d, 0x3f, sizeof d);
cin >> n >> m;
while(m--) {
int x, y, z; cin >> x >> y >> z;
d[x][y] = d[y][x] = z;
g[x][y] = true;
}
for(int k = 1; k <= n; k++)
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
if(d[i][j] >= d[i][k] + d[k][j])
d[i][j] = d[i][k] + d[k][j],
ans += g[i][j], g[i][j] = 0;
cout << ans;
}
标签:
图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-01-15 cf1204 D2. Kirk and a Binary String (hard version)(思维)
2022-01-15 cf360 B. Levko and Array(二分答案,dp判断)
2022-01-15 cf1060 E. Sergey and Subway(树形dp)