匹配

哈希能A

水到爆炸

回家

事实上我做过一个原题,甚至比这个回家难的多,而且那个题多组询问必经点

然后我做一组询问就打炸了

大约就是删了很多东西,然后自己想的太简单了

直接统计了割点,懒得打lca和树上差分,懒得打dfs,偷懒让我付出很大代价

最后只有10,

打代码一定不能偷懒,一定不能偷懒

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 810000
ll dfn[A],low[A],ver[A],nxt[A],head[A],s[A],fa[A],belong[A],kx[A];
ll Head[A],Nxt[A],Ver[A],To[A],vst[A];
ll tot=0,tot2=0,num=0,n,m,t,root;
vector<ll> dcc[A],ans;
bool cut[A];
void add(ll x,ll y){nxt[++tot]=head[x],head[x]=tot,ver[tot]=y;
}
void Add(ll x,ll y){Nxt[++tot2]=Head[x],Head[x]=tot2,Ver[tot2]=y;
}
inline ll read(){ll f=1,x=0;char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c-'0');c=getchar();}return f*x;
}
void tarjan(ll x)
{ll flag=0;dfn[x]=low[x]=++tot;s[++s[0]]=x;for(ll i=head[x];i;i=nxt[i]){ll y=ver[i];if(!dfn[y]){tarjan(y);low[x]=min(low[x],low[y]);if(low[y]>=dfn[x]){flag++;num++;if(flag>1||x!=root)cut[x]=1;while(s[0]){ll p=s[s[0]--];dcc[num].push_back(p);if(p==y)break;}dcc[num].push_back(x);}}else low[x]=min(low[x],dfn[y]);}
}
void dfs(ll x)
{if(x==belong[n])return ;vst[x]=1;for(ll i=Head[x];i;i=Nxt[i]){ll y=Ver[i];if(vst[y])continue;fa[y]=x;dfs(y);}return ;
}
void re(){num=0,tot=0;ans.clear();tot2=0;for(ll i=0;i<=800000;i++)    dcc[i].clear();memset(nxt,0,sizeof(nxt));memset(Head,0,sizeof(Head));memset(Nxt,0,sizeof(Nxt));memset(fa,0,sizeof(fa));memset(vst,0,sizeof(vst));memset(head,0,sizeof(head));memset(ver,0,sizeof(ver));memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));memset(cut,0,sizeof(cut));memset(kx,0,sizeof(kx));
}
int main()
{t=read();while(t--){re();n=read(),m=read();for(ll i=1;i<=m;i++){ll x=read(),y=read();add(x,y);add(y,x);}for(ll i=1;i<=n;i++)if(!dfn[i]) root=i,tarjan(i);ll nu=num;for(ll i=1;i<=n;i++)if(cut[i])belong[i]=++nu,kx[nu]=i;for(ll i=1;i<=num;i++)for(ll j=0;j<dcc[i].size();j++){ll x=dcc[i][j];if(cut[x]) Add(belong[x],i),Add(i,belong[x]);else belong[x]=i;}
/*        for(ll i=1;i<=n;i++){cout<<"belong="<<belong[i]<<endl;}
*/        dfs(belong[1]);ll x=fa[belong[n]];while(x!=belong[1]){if(x==0) break;if(x>num) ans.push_back(kx[x]);x=fa[x];}printf("%lld\n",1ll*ans.size());sort(ans.begin(),ans.end());for(ll i=0;i<ans.size();i++)printf("%lld ",ans[i]);cout<<endl;}
}

转载于:https://www.cnblogs.com/znsbc-13/p/11248153.html

NOIP模拟测试8「匹配·回家」相关推荐

  1. NOIP模拟测试22「位运算」

    范围n-----$100000$   m $30$ 输出方案 这是一个很好的$dp$题 首先我们应该看出来一条性质只要你最后有方案达到$n$个$1$,那么你可以达到任何`一种$n$个$1$的情况 例如 ...

  2. NOIP模拟测试19「count·dinner·chess」

    反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...

  3. NOIP模拟测试30「return·one·magic」

    magic 题解 首先原式指数肯定会爆$long$ $long$ 首先根据欧拉定理我们可以将原式换成$N^{\sum\limits_{i=1}^{i<=N} [gcd(i,N)==1] C_{G ...

  4. NOIP模拟测试21「折纸·不等式」

    折纸 题解 考试时无限接近正解,然而最终也只是接近而已了 考虑模拟会爆炸,拿手折纸条试一试,很简单 考你动手能力 代码 #include<bits/stdc++.h> using name ...

  5. NOIP模拟测试18「引子·可爱宝贝精灵·相互再归的鹅妈妈」

    待补 引子 题解 大模拟,注意细节 代码1 #include<bits/stdc++.h> using namespace std; int n,m;char a[1005][1005]; ...

  6. NOIP模拟测试10「大佬·辣鸡·模板」

    大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...

  7. NOIP模拟测试38「金·斯诺·赤」

    金 辗转相减见祖宗 高精 #include<bits/stdc++.h> using namespace std; #define A 2000 #define P 1 #define N ...

  8. NOIP模拟测试34「次芝麻·呵呵呵·长寿花」

    次芝麻 题解 大力打表,发现快速幂, 例如初始$5$ $6$,那么第一次就是$5*2\%11=10$,$6*2\%11=1$. 代码 #include<bits/stdc++.h> usi ...

  9. NOIP模拟测试28「阴阳·虎·山洞」

    写这几个题解我觉得我就像在按照官方题解抄一样 阴阳 题解 将题目中给的阴阳看作黑色和白色 首先我们观察到最后生成图中某种颜色必须是竖着单调递增或竖着单调递减 类似这样 否则不满足这个条件 但合法染色方 ...

最新文章

  1. 对于第十五届智能车竞赛由于受到疫情影响对于确定国赛中可能存在瑕疵的地方
  2. 为docker设置国内镜像【转】
  3. IIS7.5配置对PHP的支持
  4. Pixhawk原生固件PX4之顶层软件结构
  5. leetcode 451. 根据字符出现频率排序
  6. 实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】
  7. IOS学习笔记06---C语言函数
  8. 为什么我的数据库应用程序这么慢?
  9. 第一章 Java代码执行流程
  10. 快速排序算法_大佬的快速排序算法,果然不一样
  11. 跨境电商指南:如何处理客户投诉
  12. HttpClient下载图片不完整的解决办法
  13. 6、numpy之文件保存与加载
  14. Golang学习——error错误处理浅谈
  15. 【51单片机】十分钟学会定时器中断¹
  16. 关于Navicat到期的办法(亲测有效)
  17. 存储中所说的蓝光和磁带库
  18. 计算机excel表格公式教程,Excel2010
  19. 郭锡良古代汉语复习重点总结
  20. rem与px之间的换算

热门文章

  1. 安装telnet_Flask干货:Memcached缓存系统——Memcached的安装
  2. HH SaaS电商系统的入库功能模块设计
  3. 阐述计算机网络的作用答案,计算机网络习题及答案(50页)-原创力文档
  4. python中的range_python中range()与xrange()用法分析
  5. python字符串排序_Python-如何对字符串列表进行排序?
  6. python中可选参数是什么意思_Python如何定义有可选参数的元类
  7. Python3实现翻转二叉树问题
  8. 大学计算机需要论文吗,大一新生刚开学,是否有必要带电脑?听听辅导员的建议,非常中肯...
  9. 字符斜杠是合法常量吗_【面试秘籍】你对String的intern方法了解吗
  10. 计算机语言 angela,Angela