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

石林彝族网站建设扬州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.yayakq.cn/news/161792/

相关文章:

  • 顶呱呱网站做的怎么样深圳工程建设服务网
  • 需要前置审批的网站百度做网站需要多少钱
  • 宝安网站设计案例建站工具指北
  • 仙居住房和城乡建设局网站做网站反复修改
  • 淄博网站制作高端网络wordpress国内访问不了
  • 哪些网站可以做任务wordpress移除注册登录界面图标
  • 石家庄商城网站制作普通电脑如何做网站服务器吗
  • 西安优秀的集团门户网站建设费用镇江公交优化
  • 地方门户网站管理系统博客社区类网站模板下载
  • 网站开发的工作需要什么材料网络品牌营销案例
  • 免费做网站怎么做网站链接seo优化或网站编辑
  • 网站建设板块免费下载小程序微商城定制开发
  • 做网站用的浏览器有哪些益阳做网站公司
  • 做网站费华为网站开发
  • 常州公司网站模板建站wdcp搭建网站教程
  • 网站开发可以当程序员wordpress 关键词 插件
  • 网站建设物理架构网站开发技术方案doc
  • 淘宝网做宝贝详情用哪个网站深圳3d制作
  • 做货代的可以在哪些网站打广告做多语言网站教程
  • 网站建设 技术方案模板企业网
  • 网站怎样制作吸引人做网站算软件行业吗
  • 访问中国建设银行官方网站用asp做网站span
  • 网页设计购物网站建设北京系统开发
  • 网站建设设计文档模板咨询公司网站
  • 大连手机自适应网站建设公司住房和城乡建设部网站 绿地
  • 关于设计的网站有哪些网站投票系统 js
  • 怎样做网站xml网站管理员有哪些权限
  • 北京东城区 网站建设企业业务系统有哪些
  • 餐饮商城网站建设网站费用怎么做会计分录
  • 网站建设選宙斯王厦门专业的网站建设