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

日照做网站公司什么是互联网推广

日照做网站公司,什么是互联网推广,长沙建一个网站多少钱,2345网址大全导航下载大意:给出一个有向图,问能否在只去掉一条边的情况下破掉所有的环 解析:最直接的是枚举每个边,将其禁用,然后在图中找环,如果可以就YES,都不行就NO 复杂度O(N*M)看起来不超时 但是实现了以后发现…

 

 

 

 

 

 

 

大意:给出一个有向图,问能否在只去掉一条边的情况下破掉所有的环

 

 

解析:最直接的是枚举每个边,将其禁用,然后在图中找环,如果可以就YES,都不行就NO

复杂度O(N*M)看起来不超时

但是实现了以后发现即使优化到不清空vis数组(时间戳标记),也仍然超时。

因为O(N*M)已经很接近时间复杂度上界,常数稍大就GG。

不过可以脑补一下取巧算法:在不超时的前提下,随机取K个边进行检验~~~。不过数据多了就非常容易GG。理论上还是可行的。

 

 

正解:从枚举边变为枚举点,删掉到达一个点的某条边可以认为是该点入度 -1 ,然后做拓扑排序。

如果所有点都能访问到,说明没有环,YES。

如果有的点不能访问到,则说明图中存在环,删到达该点的某条边不可行。

 

入度 -1 的正确性:

可以认为是暂时不具体考虑删掉的是那条边,到了这个点的入边只剩一个没有访问的时候,该点的入度为0,可以开始以该点为起点dfs(bfs也行),如果该点正好在某个环内,就直接破掉(遍历)了这个环。、

 

 1 /*
 2 Welcome Hacking
 3 Wish You High Rating
 4 */
 5 #include<iostream>
 6 #include<cstdio>
 7 #include<cstring>
 8 #include<ctime>
 9 #include<cstdlib>
10 #include<algorithm>
11 #include<cmath>
12 #include<string>
13 using namespace std;
14 int read(){
15     int xx=0,ff=1;char ch=getchar();
16     while(ch>'9'||ch<'0'){if(ch=='-')ff=-1;ch=getchar();}
17     while(ch>='0'&&ch<='9'){xx=(xx<<3)+(xx<<1)+ch-'0';ch=getchar();}
18     return xx*ff;
19 }
20 const int maxn=510,maxm=100010;
21 int N,M,lin[maxn],len,in_[maxn],deg[maxn];
22 struct edge{
23     int y,next;
24 }e[maxm];
25 inline void insert(int xx,int yy){
26     e[++len].next=lin[xx];
27     lin[xx]=len;
28     e[len].y=yy;
29     in_[yy]++;
30 }
31 bool vis[maxn];
32 void dfs(int x){
33     vis[x]=1;
34     for(int i=lin[x];i;i=e[i].next){
35         deg[e[i].y]--;
36         if(!vis[e[i].y]){
37             if(deg[e[i].y]<=0)
38                 dfs(e[i].y);
39         }
40     }
41 }
42 int main(){
43     //freopen("in.txt","r",stdin);
44     N=read(),M=read();
45     for(int i=1;i<=M;i++){
46         int t1=read(),t2=read();
47         insert(t1,t2);
48     }
49     for(int i=1;i<=N;i++){
50         for(int j=1;j<=N;j++)
51             deg[j]=in_[j];
52         memset(vis,0,sizeof(vis));
53         deg[i]--;
54         for(int j=1;j<=N;j++)
55             if((!vis[j])&&deg[j]<=0)
56                 dfs(j);
57         bool OK=1;
58         for(int j=1;j<=N;j++)
59             if(!vis[j]){
60                 OK=0;
61                 break;
62             }
63         if(OK){
64             printf("YES\n");
65             return 0;
66         }
67     }
68     printf("NO\n");
69     return 0;
70 }
View Code

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/lzhAFO/p/8283809.html

http://www.lbrq.cn/news/2798983.html

相关文章:

  • 那个网站招丑的人做网红查收录网站
  • 网站备案地点选择网站推广方案有哪些
  • 在家做兼职的正规网站平台seo优化报价
  • 做爰真实网站免费seo在线工具
  • 洛阳营销型网站百度推广的费用
  • 珠海多语种网站制作百度2022最新版本
  • 做网站已经不行河南网站设计
  • 做网站的三个软件seo网络培训学校
  • wordpress结合tornado成都优化官网公司
  • 开发网站需要怎么做网站一级域名和二级域名区别
  • 淘宝怎么才能发布网站建设重庆seo黄智
  • 东莞建设网站软件手机百度2020最新版
  • 垂直网站需要多少钱广东疫情防控措施
  • 网站建设公司推广百度投放广告一天多少钱
  • 三明企业网站建设山西seo排名
  • 最好的免费发布网站百度官网首页登陆
  • 丹东建设工程信息网站html简单网页设计作品
  • 网站建设在线推广推广代理公司
  • 投票网站设计百度官网app下载
  • 游戏网页代码西安百度seo
  • 宁波哪家公司做网站好百度云盘登录入口
  • 响应式网站是怎么做的seo的基本内容
  • 建站节沈阳黄页88企业名录
  • 西安做门户网站最好的公司运营推广
  • 珠海市住房城乡建设官网北京seo公司wyhseo
  • 成都app制作软件seo教程免费
  • 建设摩托车是名牌吗关键词优化到首页怎么做到的
  • 靠谱网站优化哪家好交换友链
  • 网页设计需求模板seo营销服务
  • 住房新建网站在线crm系统
  • 在线课程|基于SprinBoot+vue的在线课程管理系统(源码+数据库+文档)
  • javaweb开发笔记——微头条项目开发
  • 【Express零基础入门】 | 构建简易后端服务的核心知识
  • RK-Android11-PackageInstaller安装器自动安装功能实现
  • 0基础安卓逆向原理与实践:第3章:逆向工程理论基础
  • JS对象与JSON转换全解析