/*
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的更多相关文章

  1. POJ3697+BFS+hash存边

    /* 疾速优化+hash存边 题意:给定一个包含N(1 ≤ N ≤ 10,000)个顶点的无向完全图,图中的顶点从1到N依次标号.从这个图中去掉M(0 ≤ M ≤ 1,000,000)条边,求最后与顶 ...

  2. POJ3697【BFS】

    题意: n个点的完全图,删掉m条边以后,求与1联通的点的个数. 思路: 直接判断 遍历图,n(n+1)/2=5e7 复杂度n^2......,哦,这样也行... //#include<bits/ ...

随机推荐

  1. [Swoole系列入门教程 2] 入门级的Swoole的demo.服务端与客户端

  2. LUOGU P1903 [国家集训队]数颜色 / 维护队列

    传送门 解题思路 带修莫队,第一次写,其实和普通莫队差不多,就是多了个时间轴,块分n^(2/3)最优,时间复杂度O(n^(5/3)). #include<iostream> #includ ...

  3. 基于阿里云安装脚本扩展 之 自动安装mongodb及php扩展

    好久没有发布文章了,有点跟不上当初这个博客的初衷.为了使自己的博客更新不半途而废,今天特意再写了一个自动安装脚本,一样是基于阿里云的服务端安装脚本进行的扩展.闲话不说,直接放代码: #!/bin/ba ...

  4. Object源码阅读

    native修饰符:所修饰的方法的实现是由非java代码实现的 /** * 一个java程序如果想调用本地方法,需要执行两个步骤 * 1.通过system.loadLibrary()将包含本地方法实现 ...

  5. 初探.NET CORE WEB API(RESTful风格)

    前面有4篇系列博客 (一)Asp.net web api中的坑-[找不到与请求 URI匹配的 HTTP 资源] (二)Asp.net web api中的坑-[http get请求中的参数] (三)As ...

  6. LUOGU P1937 [USACO10MAR]仓配置Barn Allocation

    传送门 解题思路 扫了一眼觉得是贪心+线段树,结果贪心的时候刚开始按区间长度排的序..这还有82分,后来叉了自己,换成按右端点排序过了. 代码 #include<iostream> #in ...

  7. 一句话介绍python线程、进程和协程

    一.进程: Python的os模块封装了常见的系统调用,其中就包括fork.而fork是linux常用的产生子进程的方法,简言之是一个调用,两个返回. 在python中,以下的两个模块用于进程的使用. ...

  8. JS random函数深入理解(转载)

    转载自:(本文对读者有帮助的话请移步支持原作者) http://www.cnblogs.com/starof/p/4988516.html 一.预备知识 Math.ceil();  //向上取整. M ...

  9. HTML连载58-绝对定位的参考点以及注意事项

    一.绝对定位参考点 1.规律: (1)默认情况下所有的绝对定位的元素,无论有没有祖先元素,都会以body作为参考点. <style> .box1{ width: 300px; height ...

  10. css3 实现明信片正背面翻转

    <!DOCTYPE html> <html lang="zh-cn" style="width: 100%;height: 100%;"> ...