题意:给一个图 给定一个点s 求补图中s点到达各个点的最短路

思路:从s点开始bfs 在图中与s点有连接的都是在补图中不能直接到达的点 反之在补图中都是可以直接到达的点 由此bfs ((( 诡异的写法。。。

AC代码:

 #include "iostream"
#include "string.h"
#include "stack"
#include "queue"
#include "set"
#include "map"
#include "algorithm"
#include "stdio.h"
#include "math.h"
#define ll long long
#define mem(a) memset(a,0,sizeof(a))
#define max(a,b) a > b ? a : b
#define min(a,b) a < b ? a : b
#define INF 20005
using namespace std; int dis[];
int vis[]; vector<int>Node[]; void Delete_Edge(int u,int v)
{
Node[u].push_back(v);
Node[v].push_back(u);
} void fun(int s,int n)
{
queue<int>Q;
set<int> s1;
set<int> s2;
set<int> *ss;
set<int> *ss1 = &s1;
set<int> *ss2 = &s2;
Q.push(s);
dis[s] = ;
vis[s] = ;
for(int i=; i<=n; i++)
s1.insert(i);
s1.erase(s); while(!Q.empty())
{
int r=Q.front();
Q.pop();
for(int i=; i<Node[r].size(); i++)
{
if(!ss1->count(Node[r].at(i))) continue;
ss2->insert(Node[r].at(i)); //未找到
ss1->erase(Node[r].at(i)); //找到
}
set<int>::iterator it;
for(it=ss1->begin(); it!=ss1->end(); it++)
{
if(!vis[*it])
{
vis[*it] = ;
dis[*it] = dis[r]+;
Q.push(*it);
}
}
ss1->clear();
ss = ss1, ss1 = ss2, ss2 = ss;
}
} int main()
{
int n,m,t,s;
scanf("%d",&t);
while(t--)
{ mem(vis);
scanf("%d%d",&n,&m);
for(int i = ; i <= n; ++i) dis[i] = ;
for(int i = ; i <= n; ++i) Node[i].clear();
for(int i=; i<=m; i++)
{
int u,v;
scanf("%d%d",&u,&v);
Delete_Edge(u,v);
}
scanf("%d",&s);
fun(s,n);
int k = ;
for(int i=; i<=n; i++)
{
if(i!=s)
{
if(k==)
printf("%d",dis[i]==?-:dis[i]);
else
printf(" %d",dis[i]==?-:dis[i]);
k++;
}
}
printf("\n");
}
return ;
}

hud 5876 2016 ACM/ICPC Asia Regional Dalian Online的更多相关文章

  1. HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)

    Sparse Graph Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)To ...

  2. 2016 ACM/ICPC Asia Regional Dalian Online 1002/HDU 5869

    Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  3. 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873

    Football Games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  4. HDU 5874 Friends and Enemies 【构造】 (2016 ACM/ICPC Asia Regional Dalian Online)

    Friends and Enemies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  5. HDU 5875 Function 【倍增】 (2016 ACM/ICPC Asia Regional Dalian Online)

    Function Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  6. HDU 5873 Football Games 【模拟】 (2016 ACM/ICPC Asia Regional Dalian Online)

    Football Games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  7. hdu 5868 2016 ACM/ICPC Asia Regional Dalian Online 1001 (burnside引理 polya定理)

    Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 262144/262144 K ...

  8. 2016 ACM/ICPC Asia Regional Dalian Online Football Games

    Football Games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  9. 2016 ACM/ICPC Asia Regional Dalian Online 1008 Function 二分+RMQ

    Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...

随机推荐

  1. Mongodb启动命令mongod参数说明

    Mongodb启动命令mongod参数说明 mongod的主要参数有: 基本配置 ----------------------------------------------------------- ...

  2. 【转载】使用Pandas创建数据透视表

    使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...

  3. bzoj2330 糖果

    Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...

  4. tomcat乱码原因--基本的编码问题

    tomcat乱码原因:在学习servlet时候,经常会遇到中文乱码的问题,网上查只知道如何设置不乱码,其中的原理不是很明白.我认为明白其中的原理,乱码问题就很容易解决 tomcat乱码解决方法: po ...

  5. C++ 修饰名的格式探究

    以下结果是由VS2010里面测试得出: ------------------------------------------------------------------ /* 函数名.类名.名称空 ...

  6. 去除ios系统a标签点击时的灰色背景

    使用图片作为a标签的点击按钮时,当触发touchstart的时候,往往会有一个灰色的背景,想要去掉的话可以用下面这种方式 a,a:hover,a:active,a:visited,a:link,a:f ...

  7. jquery ajax 请求参数详细说明 及 实例

    url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...

  8. mysql触发器,答题记录表同步教学跟踪(用户列表)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABVQAAAOOCAIAAABgEw4AAAAgAElEQVR4nOy92VcT27r/zX+xLtflvt

  9. 调试asp.net网页时不显示treeview的原因

    在.net中本地调试asp.net网页时,treeview控件显示为文字方式,原因是在http://localhost/下面找不到webctrl_client的路径,解决的方法是把webctrl_cl ...

  10. 无法打开之前cuda的vs项目,打开之后变灰色

    解决办法: 打开convolution_vs2010.vcxproj文件,将之前cuda 5.5全部改成cuda7.5. 就可以打开了.