POJ3697
/*
Memory Time
7096K 2641MS
*/ #include <iostream>
#include <string> using namespace std; #define HASHLEN 1000117
#define DEMNUM 1000001 int hashTable[HASHLEN];
int factor = ; int pcs[]; struct Node {
int a;
int b;
int next;
};
Node dam_node[DEMNUM]; int myq[DEMNUM]; inline int is_demaged(int a, int b) { int idx = hashTable[(a * factor + b) % HASHLEN];
while (idx > ) {
if (dam_node[idx].a == a && dam_node[idx].b == b) {
return ;
}
idx = dam_node[idx].next;
}
return ;
} int main() {
int case_i = ;
int pc_num = , dam_num = , i, j, num, pca, pcb, head, tail, hVal, idx, flag;
while(scanf("%d %d", &pc_num, &dam_num) && !(pc_num == && dam_num == )) { memset(hashTable, 0x00, sizeof(hashTable));
memset(pcs, 0x00, sizeof(pcs));
for (i = ; i <= dam_num; i++) {
//input data
scanf("%d %d", &pca, &pcb);
if (pca < pcb) {
dam_node[i].a = pca;
dam_node[i].b = pcb;
hVal = (pca * factor + pcb) % HASHLEN;
} else {
dam_node[i].a = pcb;
dam_node[i].b = pca;
hVal = (pcb * factor + pca) % HASHLEN;
}
dam_node[i].next = ; //create hash table
idx = hashTable[hVal];
if (idx > ) {
dam_node[i].next = idx;
hashTable[hVal] = i;
} else {
hashTable[hVal] = i;
}
} num = ;
head = ;
tail = ;
for (i = ; i <= pc_num; i++) {
if (!is_demaged(,i)) {
myq[(tail++) % DEMNUM] = i;
num++;
pcs[i]=;
}
}
while(head!=tail) {
int v = myq[(head++) % DEMNUM];
for (j = ; j <= pc_num; j++) {
if (pcs[j]== || v == j) continue;
if (v < j) {
flag = is_demaged(v,j);
} else {
flag = is_demaged(j,v);
}
if (!flag) {
pcs[j]=;
myq[(tail++) % DEMNUM] = j;
num++;
}
}
}
printf("Case %d: %d\n", ++case_i, num);
}
}
POJ3697的更多相关文章
- POJ3697+BFS+hash存边
/* 疾速优化+hash存边 题意:给定一个包含N(1 ≤ N ≤ 10,000)个顶点的无向完全图,图中的顶点从1到N依次标号.从这个图中去掉M(0 ≤ M ≤ 1,000,000)条边,求最后与顶 ...
- POJ3697【BFS】
题意: n个点的完全图,删掉m条边以后,求与1联通的点的个数. 思路: 直接判断 遍历图,n(n+1)/2=5e7 复杂度n^2......,哦,这样也行... //#include<bits/ ...
随机推荐
- 嘴巴题8 BZOJ2318: Spoj4060 game with probability Problem
Time Limit: 1 Sec Memory Limit: 128 MB Submit: 555 Solved: 273 [Submit][Status][Discuss] Description ...
- windows API 第八篇 _tcsicmp _stricmp _wcsicmp _mbsicmp
这些函数都是比较字符串小写的,忽略大写,出入的字符串都将按照小写比较Perform a lowercase comparison of strings. 函数原型: int _stricmp( con ...
- 乐观、悲观锁、redis分布式锁
悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给 ...
- cannot be cast to javax.servlet.Servlet 解决
使用maven创建web项目的时候,通过添加依赖的方式来添加servlet-api,如下 通过maven的命令(tomcat:run)来启动项目,发现访问的时候报错,错误如下: 错误排查: 首先查看s ...
- Python-流程控制 if判断
目录 if 判断 语法 单分支结构 双分支结构 多分支结构 for循环 语法 for + break for + continue for + else range函数 for + if 练习 if ...
- LUOGU P1903 [国家集训队]数颜色 / 维护队列
传送门 解题思路 带修莫队,第一次写,其实和普通莫队差不多,就是多了个时间轴,块分n^(2/3)最优,时间复杂度O(n^(5/3)). #include<iostream> #includ ...
- Oracele 11.2.0.3 的一个问题
最近又在折腾Oracle.由于要用到Oracle spatial对Google投影的空间数据的操作,所以得安装11.2.0.3以上版本的Oracle.但是发现这样的一个问题,当我在64位系统的笔记本上 ...
- 加载框(loading)
一般在用户提交数据或者新加载页面时,请求服务器的过程,页面没有响应,但是用户并不知道,此时在发生什么.这时,就需要loading框给用户提示,增加用户体验. 1.引入loading.css. html ...
- PAT甲级——A1012 The Best Rank
To evaluate the performance of our first year CS majored students, we consider their grades of three ...
- python-pygame安装教程
网上有很多关于python,pygame的安装教程.大都比较麻烦,下面为大家介绍一种非常简单的安装方法.(因为安装大都是新手教程写详细一些) python是32位 python是3.6 1 pip配置 ...