码迷,mamicode.com
首页 > 其他好文 > 详细

ACM之图论

时间:2019-09-21 19:22:00      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:int   dfs   数据   return   实现   欧拉路径   i++   进入   acm   

 

实验数据: 

int dege[5][5] = {
    { 0, 9 ,6,-1,-1},
    {-1, 0, 4, 5,-1},
    {-1,-1, 0,-1, 7},
    { 3,-1,-1, 0,-1},
    {-1,-1,-1, 8, 0} };

 

  • DFS 深度优先搜索标记

  利用二维矩阵,存放图的信息,例如n个结点,那么图就是n*n大小,图分为有向图和无向图,在量化为矩阵的时候,区别就是一个是不对称的,无向是对称矩阵,然后用一个长度为n的一维矩阵存放,该节点是否被访问,由于未知该图的深度有多少,所以使用递归算法,在递归过程,通过标记矩阵判断该结点是否访问,未访问则进入下一层递归

 

int egde[5][5];//使用顶部的数据!
int pre[5] = { 0 },  tag=0;//存放结点被第几个访问,
void dfstag(int cur, int n) {
    pre[cur] = ++tag; //是否访问标记;第几个被访问;
    for (int i = 0; i < n; ++i) 
        if (edge[cur][i]>0&&pre[i]==0) {//未被访问,则进入,
            dfstag(i, n);
        }
}
int main() {
    dfstag(0, 5);
    for (int i = 0; i < 5; i++)
        cout << " " << pre[i];
    system("pause");
    return 0;
}

 

 

  • 无向图找桥

   

  • 无向图连通度

 

  • 最大团问题

 

  • 欧拉路径

 

  • Dijkstra数组实现

 

  • Dijkstra
  • BellmanFord单源最短路

ACM之图论

标签:int   dfs   数据   return   实现   欧拉路径   i++   进入   acm   

原文地址:https://www.cnblogs.com/yidiandianwy/p/11564034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!