广告位招租C: City
【问题描述】
C: City
Time Limit: 1 s Memory Limit: 128 MB
Problem Description
如果城市A和城市B互通,城市B和城市C互通,那么城市A和城市C也互通,A、B、C三个城市算一个聚集点。先已知有n个城市和m条道路,想求的是有几个聚集点?但小S觉得太简单了,由于战争原因,某些城市会被导弹销毁掉,与之相应的道路也变得不可用。之前已经被销毁的不会被复原。现给定每次销毁的城市顺序,求每次销毁后聚集点有多少个。
Input
第一行输入n和m,表示城市数量和道路数量(1≤n≤104,1≤m≤2n)
接下来m行,每行输入两个数ai和bi (1≤ai,bi≤n)。表示ai和bi直接有道路
第m+2行输入q,表示有q个城市会被销毁 (1≤q≤n)
接下来输入q个数,每行输入一个不重复的数,表示被销毁的城市
Output
输出一行q个数,每i个数表示第i个城市销毁后聚集点的数量
Sample Input
8 9
1 2
1 3
1 6
2 4
3 6
4 5
4 7
5 7
5 8
4
3 2 5 4
Sample Output
1 2 3 3
分析:先把炸毁的城市存起来,然后倒着建并差集
之前学了链式前向星,这里敲了下,勉强用在这题
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>using namespace std;
const int N=1e4+100;struct edge
{int st;int to;int next;
}edge[4*N];
int head[4*N];
int fa[2*N];
int e[2*N];
int n, m, q;
int cnt;
void add(int u,int v)
{edge[cnt].to=v;edge[cnt].st=u;edge[cnt].next=head[u];head[u]=cnt++;
}
int find(int x)
{return fa[x]==x?x:fa[x]=find(fa[x]);
}void unite(int u,int v)
{int fu=find(u),fv=find(v);if(fu!=fv)fa[fu]=fv;
}int val[N];
int tt[N];int main()
{int u, v;int x;scanf("%d%d",&n,&m);memset(head,-1,sizeof(head));memset(e,0,sizeof(e));for(int i=1;i<=n;i++) fa[i]=i;cnt=0;for(int i=0;i<m;i++){scanf("%d%d",&u,&v);add(u,v);add(v,u);//双向存储}scanf("%d",&q);for(int i=0;i<q;i++){scanf("%d",&x);e[x]=1;tt[i]=x;}for(int w=0;w<cnt;w++){int v=edge[w].to;int u=edge[w].st;if(!e[u]&&!e[v]){unite(u,v);}}int nct=0;int ans=0;for(int j=1;j<=n;j++){if(fa[j]==j&&!e[j]) nct++;}val[ans++]=nct;for(int i=q-1;i>0;i--){int u=tt[i];//城市e[u]=0;for(int k=head[u];~k;k=edge[k].next){int v=edge[k].to;if(!e[v])unite(u,v);}//nct=0;for(int j=1;j<=n;j++){if(fa[j]==j&&!e[j]) nct++;}val[ans++]=nct;}for(int i=ans-1;i>=0;i--){if(i==0)printf("%d\n",val[i]);elseprintf("%d ",val[i]);}return 0;
}
广告位招租C: City相关推荐
- 使用Tkinter的Label组件写一个广告板招租
直接上代码,带注释: #导入tkinter模块 from tkinter import * #创建一个主窗口,用于容纳整个GUI程序 root = Tk() #设置标题 root.title(&quo ...
- Delphi实现sql 复制编程
{ Copyright (c) 咏南工作室 2006 作者: 陈新光 EMail:hnxxcxg@yahoo.com.cn QQ: 254072148 手机: 13025531017 TODO: ...
- 华为android8适配进度,华为 荣耀 O版本(Android 8.0)适配进度公告
[官方活动] 华为 & 荣耀 O版本(Android 8.0)适配进度公告 109470826 电梯直达 青牛 城市花部长 发表于 2017-10-26 16:47:42 来自:浏览器 最新回 ...
- 第十六届全国大学智能车竞赛创意组比赛国赛获奖名单
正式文档将会在竞赛网站公布: smartcar.cdstm.cn §01 百度智慧交通 一.东部赛区 赛区 省份 学校 队伍名称 区域赛总分 奖项 东部 山西省 太原科技大学 太科大 98.9 国一 ...
- 第十六届全国大学生智能汽车竞赛 讯飞智慧餐厅组别 全国选拔赛成绩公布说明
第十六届全国大学生智能汽车竞赛 讯飞智慧餐厅组别 全国选拔赛成绩公布说明 简 介: 本文给出了2021年第十六届全国大学生智能车迅飞智慧餐厅分赛区比赛获奖成绩与奖项设置.后面给出进入全国总决赛名单分配 ...
- 第十五届全国大学生智能车竞赛安徽赛区比赛报名信息
➤ 01普通四轮组 序号 学校名称 队伍名称 带队教师 学生1 学生2 学生3 1 安徽财经大学 追光者 现场确定 李开峰 马天祺 叶凡 2 安徽财经大学 所有题全队 现场确定 张波 孙京 王佳慧 3 ...
- 瞧!老师的屏幕是如何被学生的弹幕玩坏的......
一直认为,我是在清华第一个敢在课堂上使用弹幕的教师.这个可以使用反证法来证明–那就是对于任何新鲜的事务,一开始年轻人总是会疯狂的,随后热情就会大大衰减.比如现在使用雨课堂上课的同学就不会太喜欢发弹幕了 ...
- 自定义控件:广告内容后期加载。以及NamingContainer层次的应用
<转>http://www.pin5i.com/showtopic-11037.html 网站上的广告内容可能会因加载过慢而导致整个网页加载过慢,我们可以考虑将广告内全部放在网页最底部,等 ...
- 那些年我们一起玩DIY总结出的经验——网络篇
微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 上次简单总结了一下元件采购的一点经验,当然还没总结完,日后再说 今天总结一下最近玩bl ...
最新文章
- 如何创建启动界面Splash Screen
- linux nand 坏块_linux内核中对nand的坏块管理
- ML之LoR:kaggle比赛之利用泰坦尼克号数据集建立LoR模型对每个人进行获救是否预测
- 回归树与基于规则的模型(part1)--if-then语句
- 《看聊天记录都学不会C语言?太菜了吧》(5)打了一把游戏我学会了一个编程知识?
- 实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值
- WindowsAPI概览
- Tomcat服务器端口修改,tomcat服务器配置端口 tomcat端口号修改操作步骤
- CSS 常见布局 水平垂直居中对齐
- 完成类似百度贴吧客户端tableview滑动效果
- 前端使用Aliplayer 播放器 播放flv直播流
- 如何用美剧真正提升你的英语水平(转载)
- Android 取消蓝牙消息通知流程分析(一)
- Linux下压缩/解压缩的命令
- Json对象转json数组
- AI比赛-NER:“万创杯”中医药天池大数据竞赛——中药说明书实体识别挑战
- #萌新日志#4.使用Python定时发送微信消息
- php 情书,php输出笛卡尔情书的秘密
- 推荐一款C端的低代码产品
- 我最近开发的彩票缩水软件(J2ME)