摘要:判断最小生成树是否唯一的思路: (1) 对图中每条边,扫描其它边,如果存在权值相同的边,则对该边作标记 (2) 然后用Kruskal算法求MST (3) 求得MST后,如果该MST中为包含作了标记的边,即可判定MST唯一; 如果包含作了标记的边,则依次去掉这些边再求MST,如果求得的MST 权值与原MST的权值相同,即可判定MST不唯一 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 105 8 #define M 10050 ...
阅读全文
摘要:题意:给你n辆车,每辆车有7个字符的编号,他们之间的距离值等于他们中不同字符的位置数目,然后叫你求最高优劣值的派生方案 1/Q,Q就要最小,求最小生成树 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 999999 8 #define N 2013 9 int n,dis[N],vis[N],g[N][N];10 char s[N][10];11 12 int prim(int st)13 {14 for(int i=1; i g[i][id...
阅读全文
摘要:题意:有n个人,每个人都有自己喜欢用的网络适配器,要你求连接所有人的最小费用 构图的时候每条边的权值等于 两个人用的适配器的费用加上两个人之间网线的费用,然后求最小生成树 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 9999999 8 #define N 1005 9 int n,g[N][N],vis[N],dis[N];10 int cos[N];11 12 int prim(int st)13 {14 for(int i=1; ig...
阅读全文
摘要:题意:求连接所有村子的最短路prim+邻接矩阵 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define inf 999999 8 #define N 30 9 int n,dis[N],vis[N],g[N][N];10 11 int prim(int root)12 {13 for(int i=1; idis[i] )26 {27 mindis= dis[i];28 ...
阅读全文
摘要:题意:给你N个点M条边,求最小生成树,并且输出最小生成树里最大的那条边,并且输出路径 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 #define N 1005 9 #define M 1500510 int father[N],rank[N],n,m,sum,MAX,num;11 int NUM[N];12 struct Edge13 {14 int u;15 int v;16 int w;17 }edge[M];18 19 bool cm...
阅读全文