(题面写错了,应该是一条从b -> a 的边)

让我们设状态 (a,b,c) 表示存在一个点k,使得  dist(k,b) - dist(k,a) * 2 + 3 = c,显然这里的第三维可以压成0~2,因为每次a走出去一步,b就要多走出去两步,可以证明a和b交替走是不会影响最后的答案的,所以直接一遍BFS出所有状态,然后答案就是 形如(a,b,0) 的状态个数。

#include<iostream>
#include<cstdio>
#include<queue>
#define ll long long
using namespace std;
const int maxn=3005;
int n,m,hd[maxn],ne[maxn],to[maxn],num,ans,N[3]={1,2,0};
bool v[maxn][maxn][3]; struct node{ int a,b,c;};
queue<node> q; inline void add(int x,int y){ to[++num]=y,ne[num]=hd[x],hd[x]=num;} inline void solve(){
for(int i=1;i<=n;i++) v[i][i][0]=1,q.push((node){i,i,0}); node x;
while(!q.empty()){
x=q.front(),q.pop(); if(x.c){
for(int i=hd[x.b];i;i=ne[i]) if(!v[x.a][to[i]][N[x.c]]){
v[x.a][to[i]][N[x.c]]=1;
q.push((node){x.a,to[i],N[x.c]});
}
}
else{
ans++;
for(int i=hd[x.a];i;i=ne[i]) if(!v[to[i]][x.b][1]){
v[to[i]][x.b][1]=1;
q.push((node){to[i],x.b,1});
}
}
}
} int main(){
// freopen("dierti.in","r",stdin);
// freopen("dierti.out","w",stdout); scanf("%d%d",&n,&m);
int uu,vv;
for(int i=1;i<=m;i++) scanf("%d%d",&uu,&vv),add(vv,uu); solve(); printf("%d\n",ans);
return 0;
}

  

small test on 5.30 night T2的更多相关文章

  1. C++——使用类

    一.运算符重载 1.运算符重载 C++允许将运算符重载扩展到用户定义的类型. 要重载运算符,需使用被称为运算符函数的特殊函数形式.运算符函数的格式如下: operatorop(argument lis ...

  2. corejava_chap02

    //单行注释  --不能用在一行代码的中间/**/多行注释 --任何地方/** */文档注释  文档注释用在:package.class.member variables.member method. ...

  3. .Net程序员学用Oracle系列(28):PLSQL 之SQL分类和动态SQL

    1.SQL 语句分类 1.1.分类方法及类型 1.2.数据定义语言 1.3.数据操纵语言 1.4.其它语句 2.动态 SQL 理论 2.1.动态 SQL 的用途 2.2.动态 SQL 的语法 2.3. ...

  4. [补档]暑假集训D6总结

    考试 不是爆零,胜似爆零= = 三道题,就拿了20分,根本没法玩好吧= = 本来以为打了道正解,打了道暴力,加上个特判分,应该不会死的太惨,然而--为啥我只有特判分啊- - 真的是惨. 讲完题觉得题是 ...

  5. POSTGRESQL 并发控制

    http://meidayhxp.blog.163.com/blog/static/117608156201210243837491/ 这个内容是官方Doc中的一章,具体是那一版的,还未确认. 第九章 ...

  6. 两个左连接SQL执行计划解析(Oracle和PGSQL对比):

    上一篇解析链接如下: https://www.cnblogs.com/wcwen1990/p/9325968.html 1.SQL示例1: SQL> select * from ( select ...

  7. 一个RDBMS左连接SQL执行计划解析

    1.测试数据如下: SQL> select * from t1;  a | b  | c ---+----+---  1 | 10 | 1  2 | 20 | 2  3 | 30 | 3  4 ...

  8. [noip2017] 前三周总结

    [noip2017] 前三周总结 10.20 Fri. Day -21 距离noip复赛还有3周了,进行最后的冲刺! 首先要说今天过得并不好,和我早上比赛打挂了有关系. 不过每一次比赛都能暴露出我的漏 ...

  9. 廖雪峰Java7处理日期和时间-3java.time的API-1LocalDateTime

    1.java.time提供了新的日期和时间API: LocalDate/LocalTime/LocalDateTime ZoneDateTime/ZoneId Instant Formatter 新A ...

随机推荐

  1. 如何用JavaScript做一个可拖动的div层

    可拖动的层在Web设计中用处很多,比如在某些需要自定义风格布局的应用中,控件就需要拖动操作,下面介绍一个,希望可以满足你的需求,顺便学习一下可拖动的层是如何实现的. 下面是效果演示: 这个DIV可以移 ...

  2. jrebel插件激活

    不管用的哪个工具都可以通过下面的教程获取注册码,激活你的开发工具 原文出自:http://www.gezila.com/tutorials/11476.html 首先打开Myeclipse,点击“he ...

  3. VC关于置顶窗口的方法小结

    转摘自:http://blog.csdn.net/wirror800/article/details/4002381 将窗体置顶的方法有: //将窗体置顶的API函数 ::SetWindowPos(m ...

  4. Hibernate 懒加载 错误----no session

    错误: unable to evaluate the expression Method threw 'org.hibernate.LazyInitializa org.hibernate.LazyI ...

  5. 【HDU5772】String Problem [网络流]

    String Problem Time Limit: 10 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description Input Ou ...

  6. 汕头市队赛 yyl杯1 T1

    A SRM 05 - YYL 杯 R1 背景 傻逼题 描述 给一个序列,序列里只有两种元素1和2.现在要从序列里选出一些非空子序列使得子序列里两种元素数量相同.问有多少种方案数? 输入格式 多组数据 ...

  7. 【BZOJ】[SDOI2009]HH的项链

    [算法]主席树||离线+树状数组 [题解] 主席树经典应用:找区间不同的数字个数. 做法:记录每个数上一次出现的位置last[i],对last建权值线段树,对于区间询问last[i]<L的数字个 ...

  8. 谈数据中心SDN与NFV

    看到一篇谈论SDN与NFV的文章,分析的还不错,贴过来方便自己后续查阅: http://network.chinabyte.com/175/13095675.shtml 论数据中心SDN与NFV技术关 ...

  9. [Leetcode Week9]Word Break

    Word Break 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/word-break/description/ Description Given ...

  10. HDU1045(二分图经典建模)

    Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...