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

编程开源网站计算机培训班

编程开源网站,计算机培训班,app下载网站建设,网站开发及上线过程NC15707 可达性 题目#xff1a; 给出一个 0 ≤ N ≤ 105 点数、0 ≤ M ≤ 105 边数的有向图#xff0c; 输出一个尽可能小的点集#xff0c;使得从这些点出发能够到达任意一点#xff0c;如果有多个这样的集合#xff0c; 输出这些集合升序排序后字典序最小的。 题解:…NC15707 可达性 题目 给出一个 0 ≤ N ≤ 105 点数、0 ≤ M ≤ 105 边数的有向图 输出一个尽可能小的点集使得从这些点出发能够到达任意一点如果有多个这样的集合 输出这些集合升序排序后字典序最小的。 题解: • 先强连通缩点变成一个有向无环图 • 然后在所有入度为0的点集每一个拿出编号最小的一个点 记录缩点后的入度 for(int i1;in;i){for(int jhead[i];j!-1;jedge[j].next){int ucolor[i];int vcolor[edge[j].v];if(u!v)in[v];//记录入度 }}代码 #includebits/stdc.h using namespace std; const int maxn 1e5 5; const int INF 0x3f3f3f3f; struct node {int v, next; }edge[maxn]; vectorintp; stack int s; int dfn[maxn],low[maxn]; int color[maxn],in[maxn]; int tot,block; int head[maxn],pre[maxn]; int n,m,cnt,C,X; bool vis[maxn]; void add(int from, int to) {edge[cnt].vto;edge[cnt].nexthead[from];head[from]cnt; } void tarjan(int u) {dfn[u]low[u] tot;vis[u]1;s.push(u);for(int ihead[u];i!-1;iedge[i].next) {int vedge[i].v;if (!dfn[v]) {tarjan(v);low[u] min(low[u],low[v]);}else if(vis[v]) low[u]min(low[u],dfn[v]);}if (dfn[u]low[u]) {block;int v;do {vs.top();s.pop();color[v]block;pre[block]min(v, pre[block]);//pre保存的是同强连通分量中编号最小点 vis[v]0;} while (v!u);} }int main() {cinnm;memset(head,-1,sizeof(head));memset(pre,INF,sizeof(pre));for(int i0;im;i){int u,v;scanf(%d%d,u,v);add(u,v);}for(int i1;in;i){if(!dfn[i]) tarjan(i);}if(block1){cout 1 endl; return 0; }for(int i1;in;i){for(int jhead[i];j!-1;jedge[j].next){int ucolor[i];int vcolor[edge[j].v];if(u!v)in[v];//记录入度 }}for(int i1;iblock;i){//此处已经进行完压缩压缩后还有block个点 if(!in[i]) //如果一个点没有入度 p.push_back(pre[i]);}sort(p.begin(),p.end());coutp.size()endl;for(int i0;ip.size();i) coutp[i] ;coutendl;return 0; }NC 19960 [HAOI2006]受欢迎的牛 题目 • 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛给你M对整数(A,B)表示牛A认为牛B受欢迎。 • 这种关系是具有传递性的如果A认为B受欢迎B认为C受欢迎那么牛A也认为牛C受欢迎。 • 你的任务是求出有多少头牛被所有的牛认为是受欢迎的。 题解 • 强连通缩点 • 唯一的一个出度为0的强连通分量 • 如果有多个出度为0的强连通分量则无解 代码 #includebits/stdc.h using namespace std; const int maxn 1e5 5; const int INF 0x3f3f3f3f; struct node {int v, next; }edge[maxn]; vectorintp; stack int s; int dfn[maxn],low[maxn]; int color[maxn],in[maxn]; int tot,block; int head[maxn],pre[maxn]; int n,m,cnt,C,X; bool vis[maxn]; void add(int from, int to) {edge[cnt].vto;edge[cnt].nexthead[from];head[from]cnt; } void tarjan(int u) {dfn[u]low[u] tot;vis[u]1;s.push(u);for(int ihead[u];i!-1;iedge[i].next) {int vedge[i].v;if (!dfn[v]) {tarjan(v);low[u] min(low[u],low[v]);}else if(vis[v]) low[u]min(low[u],dfn[v]);}if (dfn[u]low[u]) {block;int v;do {vs.top();s.pop();color[v]block;pre[block]min(v, pre[block]);//pre保存的是同强连通分量中编号最小点 vis[v]0;} while (v!u);} }int main() {cinnm;memset(head,-1,sizeof(head));memset(pre,INF,sizeof(pre));for(int i0;im;i){int u,v;scanf(%d%d,u,v);add(u,v);}for(int i1;in;i){if(!dfn[i]) tarjan(i);}for(int i1;in;i){for(int jhead[i];j!-1;jedge[j].next){int ucolor[i];int vcolor[edge[j].v];if(u!v)in[u]; }}for(int i1;in;i){//此处已经进行完压缩压缩后还有block个点 if(!in[color[i]]) //如果一个点没有入度 p.push_back(pre[i]);}//sort(p.begin(),p.end());//coutans;coutp.size()endl;//for(int i0;ip.size();i) coutp[i] ;//coutendl;return 0; }
http://www.pierceye.com/news/766276/

相关文章:

  • 长治做网站哪家好赣州注册公司
  • 网站开发从入门到精通做h5的网站哪个好
  • 免费公司网站如何建立设计个人网站好备案吗
  • 建网站和做微信哪个好在线识别图片百度识图
  • php网站开发如何实现删除功能大连大连建设工程信息网站
  • 表格模板免费下载网站wordpress 插件位置
  • wordpress小白能学会吗汕头做网站优化公司
  • 军队营房基础建设网站重庆做网站个人
  • 网站建设怎样中英文网站备案是空间备案还是域名备案
  • 陕西网站制作人力资源服务外包
  • 成都网站建设哪家售后好网站建设费可以计业务费吗
  • 做服装到哪个网站拿货品质好自己制作的网页别人如何访问
  • 榆林哪里做网站网页游戏网站那个好
  • 泰安口碑好的企业建站公司wordpress验证码无效
  • 圣矢网络重庆网站建设优化推广公司好听好记的网站域名
  • 如何做旅游小视频网站比较好的外贸公司
  • 图书馆建设投稿网站使用 ahrefs 进行 seo 分析
  • 校园网站建设 德育免费换ip软件
  • 排行网站模板凡科代理千万不要做
  • 贵州省冶金建设有限公司网站网站好玩新功能
  • 怎么让客户做网站惠州关键词排名提升
  • 创建公司网站需要什么国外的智慧城市建设网站
  • 阿里云服务器做网站django高清无版权网站
  • 网页制作与网站制作wordpress二次元风格
  • 贵州省城乡建设局网签网站工业设计网站有那些
  • 网站 电信已备案 联通泗阳做网站设计
  • 胶州做淘宝的网站龙南黄页全部电话
  • 可以看网站的手机浏览器藁城住房和城乡建设局网站
  • 关于网站制作的指标哪家公司网站做的比较好
  • 网站开发一般多少钱规划设计公司毛利