图论
sheng4204
这个作者很懒,什么都没留下…
展开
-
uva 1395 Slim Span 最小生成树
题意:给一个图,求图的最长边减去最短边长最小的生成树。题目数据量很小,对边按照边长排序以后,枚举最小的边,然后找最小生成树,还是挺简单直接的一个题。#include #include #include #include using namespace std;struct edge{ int b, e, d;}id[10000];bool cmp(edge a, edge原创 2016-08-05 20:31:34 · 200 阅读 · 0 评论 -
POJ 3310 Caterpillar 并查集+dfs
题意:判断一个图是否为树,并且有一条路径使得所有顶点在这条路径上或者这个点相邻的点在路径上。先用并查集判断是否是一棵树,然后dfs回溯,每次遍历每个节点的所有子节点,然后找一个子节点扩展,看是否能遍历所有点,能就满足条件。#include #include #include #include using namespace std;vector e[105];int vis[105原创 2016-08-18 19:08:25 · 347 阅读 · 0 评论 -
poj 3311 Hie with the Pie ,floyd + 枚举排列
题意:给出一个图,求从0开始走,经过所有节点再回到0的最小时间。先用floyd处理一遍,找出两个点之间的最短路径,然后枚举排列找最小值。#include #include #include #include using namespace std;int mp[11][11];int v[20];int main() { int n, i, j, k; while原创 2016-08-18 19:24:56 · 252 阅读 · 0 评论 -
uva - 658 It's not a Bug, it's a Feature! 最短路
题意:有n个bug,m个补丁,补丁要在一定条件下才能使用,使用后会发生改变。每个补丁会给出两个字符串,第一个字符串表示条件,第i位为0表示对第i个bug没有要求,+表示必须存在,-表示必须不存在;第二个字符串表示使用后的变化,-表示没有,+表示有,0表示不变。就是最短路问题,当一个状态能使用一个补丁变化到另一个状态时就是这两个状态之间有一条边,权值就是补丁执行的时间。用二进制数表示状态,然后对原创 2016-08-19 19:04:02 · 365 阅读 · 0 评论 -
uvalive 6800 - The Mountain of Gold? 判负环
题意:给出一个图,判断能不能从0出发,再回到0,经过边的权值为负。判断图中有没有负环,并且负环上的点能回到0即可。#include using namespace std;const int INF = 0x3f3f3f3f;const int maxn = 1000 + 10;int dist[maxn];struct Edge{ int u, v, cost;原创 2016-08-25 11:54:28 · 348 阅读 · 0 评论