Realize topological sort with adjacent matrix:
#include<iostream>
#include<vector>
using namespace std;
int main(int argc,char **argv)
{
int adjacent[7][7]={{0,1,1,1,0,0,0},
{0,0,0,1,1,0,0},
{0,0,0,0,0,1,0},
{0,0,1,0,0,1,1},
{0,0,0,1,0,0,1},
{0,0,0,0,0,0,0},
{0,0,0,0,0,1,0}};
vector<int> res;
int i=0;
int k=0;
for(;k<7;k++)
{
if(adjacent[0][k]==2)
continue;
int j=0;
for(;j<7;j++)
if(adjacent[j][k]==1)
break;
if(j==7)
{
res.push_back(k+1);
for(int q=0;q<7;q++)
adjacent[k][q]=0;
adjacent[0][k]=2;
if(res.size()==7)
{
vector<int>::iterator iter=res.begin();
for(;iter!=res.end();++iter)
cout<<*iter<<" ";
cout<<endl;
return 0;
}
k=0;
}
}
if(k==7)
{
cout<<"the graph include circute route!"<<endl;
return 0;
}
}
本文通过使用邻接矩阵的方式实现了一个简单的拓扑排序算法。该算法首先定义了一个7x7的邻接矩阵来表示有向图的关系,并通过遍历顶点找到入度为0的节点进行排序。如果所有节点都能被排序,则输出排序结果;若不能,则说明图中存在环。
747

被折叠的 条评论
为什么被折叠?



