当前位置: 首页 > wzjs >正文

html5网站开发原理seo管理软件

html5网站开发原理,seo管理软件,wordpress小工具文本加图片代码,上海做网站公司哪家好二分图判定算法 判断二分图dfs遍历bfs遍历 可能的二分法bfs遍历dfs遍历 二分图判定说白了就是遍历一遍图,一边遍历一边染色,看看能不能用两种颜色给所有节点染色,且相邻节点的颜色都不相同。 // 图遍历框架dfs var traverse function(graph,…

二分图判定算法

  • 判断二分图
    • dfs遍历
    • bfs遍历
  • 可能的二分法
    • bfs遍历
    • dfs遍历

二分图判定说白了就是遍历一遍图,一边遍历一边染色,看看能不能用两种颜色给所有节点染色,且相邻节点的颜色都不相同。

// 图遍历框架dfs
var traverse = function(graph, visited, v) {visited[v] = true;// 遍历节点 v 的所有相邻节点 neighborfor (var neighbor of graph.neighbors(v)) {if (!visited[neighbor]) {// 相邻节点 neighbor 没有被访问过// 那么应该给节点 neighbor 涂上和节点 v 不同的颜色traverse(graph, visited, neighbor);} else {// 相邻节点 neighbor 已经被访问过// 那么应该比较节点 neighbor 和节点 v 的颜色// 若相同,则此图不是二分图}}
}

判断二分图

链接在这里插入图片描述

dfs遍历

class Solution {//用dfs遍历一遍图boolean res=true;boolean []visit;//保证每个节点只当一次start向四周染色boolean []col;public boolean isBipartite(int[][] graph) {int sz=graph.length;//节点的个数visit=new boolean[sz];col=new boolean[sz];for(int i=0;i<sz;i++){if(!visit[i]){dfs(graph,i);}}return res;}void dfs(int[][]graph,int start){if(res==false){return;}visit[start]=true;for(int neibor:graph[start]){if(!visit[neibor]){//染色col[neibor]=!col[start];dfs(graph,neibor);}else{//判断if(col[neibor]==col[start]){res=false;return;}}}}
}

bfs遍历

class Solution {public boolean isBipartite(int[][] graph) {int n=graph.length;boolean[]visit=new boolean[n];//记录进队列的节点,保证每个节点只进一次,进一次就相当于以这个节点为start了向四周染色了boolean[]col=new boolean[n];Queue<Integer> q=new LinkedList();for(int i=0;i<n;i++){if(visit[i]){continue;}//从i开始bfsq.add(i);visit[i]=true;while(!q.isEmpty()){int cur=q.poll();for(int neibor:graph[cur]){if(!visit[neibor]){//染色col[neibor]=!col[cur];q.add(neibor);visit[neibor]=true;}else{//检查if(col[neibor]==col[cur]){return false;}}}}}return true;}
}

可能的二分法

链接
在这里插入图片描述

bfs遍历

class Solution {//染过颜色就visit标记一下,然后进队列,进了队列就一定会出队列,出队列就会以它为中心向四周染色,visit[i]为真代表以i为中心向四周染色过public boolean possibleBipartition(int n, int[][] dislikes) {//先创建图,然后将图染色List<Integer>[]graph=new LinkedList[n+1];for(int i =1;i<=n;i++){graph[i]=new LinkedList();}for(int []e:dislikes){int a=e[0];int b=e[1];graph[a].add(b);graph[b].add(a);}boolean[]visit=new boolean[n+1];Queue<Integer> q=new LinkedList();boolean[]col=new boolean[n+1];for(int i=1;i<=n;i++){if(visit[i]){continue;}q.add(i);visit[i]=true;while(!q.isEmpty()){int cur=q.poll();for(int neibor:graph[cur]){if(!visit[neibor]){//染色col[neibor]=!col[cur];q.add(neibor);visit[neibor]=true;}else{//判断if(col[neibor]==col[cur]){return false;}}}}}return true;}
}

dfs遍历

class Solution {boolean[]col;boolean[]visit;//保证了每个节点都当过start一次,向四周染色boolean isBi=true;public boolean possibleBipartition(int n, int[][] dislikes) {//先创建图,然后将图染色List<Integer>[]graph=new LinkedList[n+1];for(int i =1;i<=n;i++){graph[i]=new LinkedList();}for(int []e:dislikes){int a=e[0];int b=e[1];graph[a].add(b);graph[b].add(a);}visit=new boolean[n+1];//visit[i]=true说明 以i为start向四周染色过col=new boolean[n+1];for(int i=1;i<=n;i++){if(!visit[i]){//没有以i为start过dfs(graph,i);}if(isBi==false){return false;}}return true;}//定义:从start开始遍历图,一边遍历一边涂色void dfs(List<Integer>[]graph,int start){if(!isBi){//已经知道不是二分图return;}visit[start]=true;for(int neibor:graph[start]){if(!visit[neibor]){//涂色col[neibor]=!col[start];dfs(graph,neibor);}else{if(col[neibor]==col[start]){isBi=false;return;}}}}
}
http://www.dtcms.com/wzjs/244317.html

相关文章:

  • 网站做多长时间才有流量网络营销师资格证报名
  • 常州建站优化建立网站的软件
  • 网站开发 演讲南昌seo招聘信息
  • 做直销建立个人网站好吗中国最新领导班子
  • vp(永久免费)加速器下载网站搜索排名优化软件
  • 网站制作公司武汉合肥全网推广
  • 高端的响应式网站建设公司模板网站如何建站
  • 建站能赚钱吗抖音seo教程
  • 济南官方网站淘宝美工培训推荐
  • 让别人做网站需要提供什么小网站搜什么关键词好
  • 网站到期是否能换服务商seo优化排名易下拉软件
  • 苏州高端网站建设个人怎么做百度竞价
  • server2008做DNS与网站产品品牌推广策划方案
  • 唐山建设信息网站白杨seo
  • 日本做的视频网站有哪些问题太原搜索引擎优化
  • 由担路网提供网站建设百度在线识别图片
  • 公司想做网站2022年适合小学生的新闻
  • 河北省住房和城乡建设网站个人博客登录入口
  • 做网站全职设计师会脱离社会么seo方案
  • 网站网页设计制作公司关键词百度网盘
  • 襄樊网站建设站长工具关键词挖掘
  • 网站建设基本流程英文外链seo兼职在哪里找
  • 手机代理企业网站郑州seo地址
  • 有哪些网站可以用随州网络推广
  • 网站建设上海公司杭州seo首页优化软件
  • 网站项目怎么做的深圳今天重大事件新闻
  • 站长工具seo综合查询方法0元做游戏代理
  • 网站建设保障机制优化大师免安装版
  • 开发网站代码量互联网营销的方法
  • 网站制作要多长时间系统优化软件哪个最好的