zoukankan      html  css  js  c++  java
  • 无向图最小环

    LCA+最小生成树是错的

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    #define maxn 310
    using namespace std;
    const long long INF = 1e17;
    int pos[maxn][maxn];
    long long map[maxn][maxn];
    long long dis[maxn][maxn];
    vector<int>ins;
    int get(int x, int y) {//神仙分治
    	if (pos[x][y] == 0) return 0;
    	get(x, pos[x][y]);
    	ins.push_back(pos[x][y]);
    	get(pos[x][y], y);
    }
    int main() {
    	int n, m;
    	for (int i = 0; i < maxn; i++) {
    		for (int j = 0; j < maxn; j++) {
    			map[i][j] = INF;
    		}
    	}
    	scanf("%d %d", &n, &m);
    	long long len;
    	int be, en;
    	for (int i = 1; i <= n; i++) map[i][i] = 0;
    	for (int i = 0; i < m; i++){
    		scanf("%d %d %lld", &be, &en, &len);
    		map[be][en] = map[en][be] = min(map[be][en], len);
    		
    	}
    	memcpy(dis, map, sizeof(map));
    	long long ans = INF;
    	for (int k = 1; k <= n; k++) {
    		for (int i = 1; i < k; i++) {
    			for (int j = i+1; j < k; j++) {
    				if (ans > dis[i][j] + map[i][k] + map[k][j]) {
    					ans = dis[i][j] + map[i][k] + map[k][j]; 
    					ins.clear();
    					ins.push_back(i);
    					get(i, j);
    					ins.push_back(j);
    					ins.push_back(k);
    				}
    			}
    		}
    		for (int i = 1; i <= n; i++) {
    			for (int j = 1; j <= n; j++) {
    				if (dis[i][j] > dis[i][k] + dis[k][j]) {
    					pos[i][j] = k;
    					dis[i][j] = dis[i][k] + dis[k][j];
    				}
    			}
    		}
    	}
    	if (ans == INF) {
    		printf("No solution.
    ");
    	}
    	else {
    		for (int i = 0; i < ins.size(); i++) {
    			printf("%d ", ins[i]);
    		}
    		printf("
    ");
    	}
    	return 0;
    }
    

      

    寻找真正的热爱
  • 相关阅读:
    5.MFC基础(五)视图、运行时类信息、动态创建
    4.MFC基础(四)菜单、工具栏、状态栏
    OpenCV Python 4.0安装
    windows批量导出文件名到txt
    *&p理解
    VS调试快捷键配置更改
    数组类的创建(下)
    数组类的创建(上)
    operator用法:隐式类型转换
    C++单例模式
  • 原文地址:https://www.cnblogs.com/lesning/p/11999862.html
Copyright © 2011-2022 走看看