zoukankan      html  css  js  c++  java
  • 最小生成树

    //最小生成树:prim法则
    void prim(vector<vector<int>> &graph, vector<bool> &visited)
    {
    	stack<int> mys;
    	int mark = 255;
    	int x = 0, y = 0;
    	for (int i = 0; i < graph.size(); i++)
    	{
    		for (int j = 0; j < graph[i].size(); j++)
    		{
    			if (graph[i][j] < mark && graph[i][j] != 0)
    			{
    				mark = graph[i][j];
    				x = i;
    				y = j;
    			}
    		}
    	}
    	visited[x] = true;
    	visited[y] = true;
    	mys.push(x);
    	mys.push(y);
    	cout << x+1 << "---->";
    	cout << y+1 << "---->";
    	mark = graph.size() - 2;
    	int count = 0;
    	while (mark-- && !mys.empty())
    	{
    		int data = 255;
    		for (int i = 0; i < graph[y].size(); i++)
    		{
    			if (graph[y][i] < data && visited[i] == false)
    			{
    				data = graph[y][i];
    				count = i;
    				mys.push(count);
    			}
    		}
    		if (data != 255)
    		{
    			cout << count+1 << "---->";	
    			visited[count] = true;
    			y = count;
    		}	
    		else
    		{
    			y = mys.top();
    			mys.pop();
    		}
    	}
    }
    
    int main()
    {
    	int n = 6;
    	vector<vector<int>>  graph(n, vector<int>(n));
    	vector<bool> visited(graph.size());
    	for (int i = 0; i < visited.size(); i++)
    	{
    		visited[i] = false;
    	}
    	graph[0] = { 0, 6, 1, 5, 0, 0 };
    	graph[1] = { 6, 0, 5, 0, 3, 0 }; 
    	graph[2] = { 1, 5, 0, 5, 6, 4 };
    	graph[3] = { 5, 0, 5, 0, 0, 2 };
    	graph[4] = { 0, 3, 6, 0, 0, 6 };
    	graph[5] = { 0, 0, 4, 2, 6, 0 };
    	show_graph(graph);
    	cout << endl;
    	DFS_digui(graph, visited, 0);
    	cout << endl;
    	for (int i = 0; i < visited.size(); i++)
    	{
    		visited[i] = false;
    	}
    	BFS(graph, visited, 0);
    	cout << endl;
    	for (int i = 0; i < visited.size(); i++)
    	{
    		visited[i] = false;
    	}
    	prim(graph, visited);
    	system("pause");
    	return 0;
    }
    

      

  • 相关阅读:
    Linux与Mac通信
    练习
    删除重复文件
    解压压缩文件
    查询压缩文件的大小
    修改文件夹和文件名字
    删除文件和文件夹
    移动文件和文件夹
    shutil复制文件夹
    shutil复制文件
  • 原文地址:https://www.cnblogs.com/zhizhi25/p/5895825.html
Copyright © 2011-2022 走看看