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

建设网站的需求分析报告中山seo排名

建设网站的需求分析报告,中山seo排名,有经验的中山网站建设,手机网站模板案例【题目链接】 ybt 1522:网络 OpenJudge 百练 1144:Network 【题目考点】 1. 图论:割点 【解题思路】 每个交换机是一个顶点,如果两地点之间有电话线连接,那么两顶点之间有一条无向边,该图是无向图。 初始时任何地…

【题目链接】

ybt 1522:网络
OpenJudge 百练 1144:Network

【题目考点】

1. 图论:割点

【解题思路】

每个交换机是一个顶点,如果两地点之间有电话线连接,那么两顶点之间有一条无向边,该图是无向图。
初始时任何地点之间都是可以通讯的,也就是说这是一个无向连通图。
如果一个交换机停止工作,导致其它一些地点不能通讯,这样的地点交灾区。那么也就是图中去掉该顶点后,有些顶点之间不再连通(没有路径),那么也就是整个图不再是连通图。这样的点就是割点。
灾区就是割点,统计灾区的数量就是统计割点的数量。
使用tarjan算法求出所有割点,将割点保存在一个set中,或用数组标记哪些顶点是割点,而后统计割点数量。

【题解代码】

解法1:Tarjan算法求割点,使用set保存割点
#include <bits/stdc++.h>
using namespace std;
#define N 105
int n, m;
vector<int> edge[N];//edge[i]:顶点i的邻接点 
int dfn[N], low[N], ts, root;
set<int> cutVer;
void tarjan(int u)
{int child = 0;dfn[u] = low[u] = ++ts;for(int v : edge[u]){if(dfn[v] == 0){tarjan(v);low[u] = min(low[u], low[v]);if(u == root && ++child > 1 || u != root && dfn[u] <= low[v])cutVer.insert(u);}elselow[u] = min(low[u], dfn[v]);} 
}
int main()
{int f, t;while(cin >> n && n != 0){ts = 0;//变量初始化 for(int i = 1; i <= n; ++i)edge[i].clear();memset(dfn, 0, sizeof(dfn));cutVer.clear();while(cin >> f && f != 0)while(cin.get() != '\n'){cin >> t;edge[f].push_back(t);edge[t].push_back(f);}for(int v = 1; v <= n; ++v) if(dfn[v] == 0)tarjan(root = v);cout << cutVer.size() << endl;}return 0;
}
解法2:Tarjan算法求割点,使用标记数组保存割点
#include <bits/stdc++.h>
using namespace std;
#define N 105
int n, dfn[N], low[N], ts, root, ct;
vector<int> edge[N];
bool cutVer[N];//cutVer[i]:i是否是割点
void tarjan(int u)
{int child = 0;dfn[u] = low[u] = ++ts;for(int v : edge[u]){if(dfn[v] == 0){tarjan(v);low[u] = min(low[u], low[v]);if(u == root && ++child > 1 || u != root && dfn[u] <= low[v])cutVer[u] = true;//u是割点 }elselow[u] = min(low[u], dfn[v]); }
} 
int main()
{int f, t;while(cin >> n && n != 0){ts = ct = 0;//变量初始化 for(int i = 1; i <= n; ++i)edge[i].clear();memset(cutVer, 0, sizeof(cutVer));memset(dfn, 0, sizeof(dfn));while(cin >> f && f != 0)while(cin.get() != '\n'){cin >> t;edge[f].push_back(t);edge[t].push_back(f);}for(int v = 1; v <= n; ++v) if(dfn[v] == 0)tarjan(root = v);for(int v = 1; v <= n; ++v) if(cutVer[v])//统计割点数量 ct++;cout << ct << endl;}return 0;
}
http://www.dtcms.com/wzjs/531929.html

相关文章:

  • 如何做话费卡回收网站宁波seo排名优化哪家好
  • 石家庄科技网站建设企业邮箱注册
  • 网站内容方案百度竞价托管哪家好
  • 做外包网站搭建苏州网站外包
  • 网站建设人员组成seo营销怎么做
  • 深圳市建设工程质量检测网站在线识别图片
  • 做行业门户网站要投资多少钱网络推广课程培训
  • 雅安市建设局网站游戏推广员是做什么的
  • 做短租哪个网站好链接购买平台
  • 人工智能设计网站福建seo学校
  • 宣讲家网站两学一做百度网址大全 官网
  • 云南免费网站建设快速优化关键词排名
  • 东莞 网站 建设 汽车常用的搜索引擎有哪些
  • 现在建设一个网站多少钱东莞百度推广优化排名
  • 作文网课哪家好seo营销专员
  • 怎么做网站海报莆田网站建设优化
  • 辽宁网站建设论坛兰州seo优化公司
  • 上海网站建设的公司百度网盘资源分享
  • 四川住房和城乡建设厅网站三类人员新开网站
  • 苏州网站推广排名南宁网站优化公司电话
  • 北湖区网站建设服务商百度竞价托管运营
  • 工业和信息化部电信设备认证中心关键词的优化方法
  • 佛山做外贸网站流程nba新闻最新消息滚动
  • 网站都到哪里做推广优化大师有用吗
  • 做耳机套的网站网络营销方法
  • 微信公众号怎么创建多少钱seo网站整站优化
  • 做效果图的网站有哪些软件在哪里可以找到网站
  • 照明公司网站制作免费独立站自建站网站
  • 大连网站建设设计公司哪家好营销技巧第三季
  • 网站推广的方式包括重庆seo网站管理