哈希+拓扑排序

题意比较绕,先开始没看懂就看了发程序,发现好像理解的不太一样,后来找到了一个题目解释。。。

摘自jcvb:其实就是说颜色相同且三个出口分别对应相同(注意有可能是合并后才相同)两个结点是相同的,可以合并,求最后合并完后剩下几个结点。

所以我们倒着计算一个房间是否和以前相同,因为有可能合并(这是看了题意才知道)导致两个房间变成一个,然后可一个到这个房间的房间的邻接表发生变化,导致其他房间可能相邻,又因为原先图就是拓扑的,前面不会影响后面,所以可以倒着合并。

#include<bits/stdc++.h>
using namespace std;
const int N = , seed = ;
int n, ans;
char key[N], t[N];
int id[N], Map[N][];
map<int, int> mp;
int main()
{
scanf("%d", &n);
ans = n;
for(int i = ; i < n; ++i)
{
scanf("%s", t);
key[i] = t[];
id[i] = i;
for(int j = ; j < ; ++j) scanf("%d", &Map[i][j]);
}
for(int i = n - ; i; --i)
{
int h = key[i];
for(int j = ; j < ; ++j) h = h * seed + id[Map[i][j]];
if(mp.find(h) != mp.end()) id[i] = mp[h], --ans;
else mp[h] = id[i];
}
printf("%d\n", ans);
return ;
}

bzoj2558的更多相关文章

  1. 【BZOJ2558】Count on a tree

    又是因为傻逼错误浪费了半天时间 原题: 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个 ...

随机推荐

  1. 集训第五周动态规划 C题 编辑距离

    Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...

  2. SSH配置—Linux下实现免密码登录

    首先,假设我们有两台服务器,服务器名称分别是 master 和 slave1,我们现在需要做的就是在服务器 master 上面登录 服务器 slave1 不需要输入密码就可以登录成功,如下图所示. 下 ...

  3. Postman 安装与使用

    本文是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 1. 官网安装(容易打开出错) 打开官网,https://www.getpostman.com  点击那个灰灰色的「Chro ...

  4. HDU 3749 Financial Crisis(点-双连通分量)

    Because of the financial crisis, a large number of enterprises go bankrupt. In addition to this, oth ...

  5. Ubuntu 16.04修改显示字体大小(包括GNOME/Unity)

    在Ubuntu中字体都基本偏大,且和分辨率无关. Unity: 安装Unity Tweak Tool sudo apt-get install unity-tweak-tool GNOME: 打开优化 ...

  6. mysql: reinit the password

    You can reinit the password : 1.stop mysql /etc/init.d/mysql stop 2.start mysql safe : mysqld_safe - ...

  7. Symantec Backup Exec部署手册

    转载  http://xiaxiaoguo.blog.51cto.com/858884/402810 Symantec Backup Exec部署手册 目录 1.Backup Exec 12.5安装. ...

  8. PowerDesinger15设置字体大小

    使用PowerDesigner时,它默认table的字体大小颜色等很难看: 假设通过 Symbol ---> Format进行设置.仅仅能对选中的最改动,新建的Table无效. 能够通过例如以下 ...

  9. C#中Stack&lt;T&gt;类的使用及部分成员函数的源代码分析

    Stack<T>类 Stack<T> 作为数组来实现. Stack<T> 的容量是 Stack<T> 能够包括的元素数. 当向 Stack<T&g ...

  10. C# VS如何整个项目中查找字符串

    Ctrl+F打开查找对话框,然后输入查找字符串,电机右边的小三角,选择整个解决方案,就可以遍历所有文件查找指定字符了