题意

300个点的无环图,开始都是白色,每次改变某个节点的颜色(黑/白),问有多少对白点之间存在只有白点的路径。

题解

类似floyd,求出两点之间的路径条数。然后白到黑就删去对应路径,黑到白就增加对应路径。再扫一遍路径数大于0的白点对。

代码

#include <cstdio>
#include <cstring>
#define N 301
int g[N][N];
int f[N][N];
bool c[N];
int main(){
int n,m,q;
while(~scanf("%d%d%d",&n,&m,&q)){
memset(g,0,sizeof g);
memset(f,0,sizeof f);
memset(c,0,sizeof c);
for(int i=1,a,b;i<=m;++i){
scanf("%d%d",&a,&b);
g[a][b]=f[a][b]=1;
}
for(int k=1;k<=n;++k)
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f[i][j]+=f[i][k]*f[k][j];
int ans=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
ans+=(f[i][j]>0);
while(q--){
int v;
scanf("%d",&v);
c[v]=!c[v];
if(c[v]){//white->black
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j)
f[i][j]-=f[i][v]*f[v][j];
f[i][v]=f[v][i]=0;
}
}
else{//black->white
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j)
if(!c[i]&&!c[j]){
f[v][i]+=g[v][j]*f[j][i];
f[i][v]+=f[i][j]*g[j][v];
}
if(!c[i]){
f[v][i]+=g[v][i];
f[i][v]+=g[i][v];
}
}
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(!c[i]&&!c[j])
f[i][j]+=f[i][v]*f[v][j];
}
int ans=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(!c[i]&&!c[j]&&f[i][j])++ans;
printf("%d\n", ans);
}
}
return 0;
}

【Sichuan 2017D】Dynamic Graph的更多相关文章

  1. 【hdu 6321】Dynamic Graph Matching

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] DP 设f[i][j]表示前i个操作,已经匹配了的点的状态集合为j的方案数 对于+操作 有两种情况. 1.这条边作为匹配的边 2.这 ...

  2. 【codeforces 807D】Dynamic Problem Scoring

    [题目链接]:http://codeforces.com/contest/807/problem/D [题意] 给出n个人的比赛信息; 5道题 每道题,或是没被解决->用-1表示; 或者给出解题 ...

  3. 【Codeforces 404C】Restore Graph

    [链接] 我是链接,点我呀:) [题意] 每个节点的度数不超过k 让你重构一个图 使得这个图满足 从某个点开始到其他点的最短路满足输入的要求 [题解] 把点按照dep的值分类 显然只能由dep到dep ...

  4. 【Codeforces 246D】Colorful Graph

    [链接] 我是链接,点我呀:) [题意] 让你找到所有和x颜色的点中,和该颜色的点颜色不同的相邻的点的个数(重复颜色算一次) 求出哪种颜色的所要求的点的数量最多. [题解] 对于每一条边只会被查到两次 ...

  5. 【LEETCODE OJ】Clone Graph

    Problem link: http://oj.leetcode.com/problems/clone-graph/ This problem is very similar to "Cop ...

  6. 【论文笔记】Dynamic Routing Between Capsules

    Dynamic Routing Between Capsules 2018-09-16 20:18:30 Paper:https://arxiv.org/pdf/1710.09829.pdf%20 P ...

  7. 【Azure Developer】Azure Graph SDK获取用户列表的问题: SDK中GraphServiceClient如何指向中国区的Endpoint:https://microsoftgraph.chinacloudapi.cn/v1.0

    问题描述 想通过Java SDK的方式来获取Azure 门户中所列举的用户.一直报错无法正常调用接口,错误信息与AAD登录认证相关,提示tenant not found. 想要实现的目的,通过代码方式 ...

  8. 【BZOJ 1901】【Zju 2112】 Dynamic Rankings 动态K值 树状数组套主席树模板题

    达神题解传送门:http://blog.csdn.net/dad3zz/article/details/50638360 说一下我对这个模板的理解: 看到这个方法很容易不知所措,因为动态K值需要套树状 ...

  9. 【BZOJ 1901】【ZJU 2112】Dynamic Rankings

    http://www.lydsy.com/JudgeOnline/problem.php?id=1901 重新用整体二分写了一下. 整体二分的思想详见论文. 貌似带修区间k大和静态区间k大都是\(O( ...

随机推荐

  1. Mysql数据库中索引的概念总结

    1.索引的目的是什么 1.快速访问数据表中的特定信息,提高检索速度 2.创建唯一性索引,保证数据库表中每一行数据的唯一性. 3.加速表和表之间的连接 4.使用分组和排序子句进行数据检索时,可以显著减少 ...

  2. 使用junit测试

    package creeper; import java.util.Scanner; public class size { private static int intercePosition = ...

  3. http1.0 1.1 与2.0

    长连接 HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接. HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一 ...

  4. jQuery EasyUI window窗口使用实例

    需求:点击[增加]按钮,弹出窗口,并对所有输入项内容进行校验,校验通过就提交给后台的action处理,没有通过校验就弹窗提示.  <!DOCTYPE html> <html> ...

  5. vue图片被加了盗链

    https://www.cnblogs.com/dongcanliang/archive/2017/04/01/6655061.html <meta name="referrer&qu ...

  6. 在linux上安装MySQL数据库,并简单设置用户密码,登录MySQL

    在新装的Centos系统上安装MySQL数据库. <p><a href="http://www.cnblogs.com/tijun/">提君博客原创< ...

  7. Object.defineProperties()与Proxy对象代理

    Object.defineProperties() 了不起啊..vue.js通过它实现双向绑定的 Object.defineProperties(obj,props) 方法直接在一个对象上定义新的属性 ...

  8. video maker & video tutorials

    video maker & video tutorials 视频课程制作工具 https://ke.qq.com/agency/personal/intro.html 成为网络老师 https ...

  9. 集合之LinkedHashSet(含JDK1.8源码分析)

    一.前言 上篇已经分析了Set接口下HashSet,我们发现其操作都是基于hashMap的,接下来看LinkedHashSet,其底层实现都是基于linkedHashMap的. 二.linkedHas ...

  10. JS检测是否是360浏览器

    // JavaScript Document //application/vnd.chromium.remoting-viewer 可能为360特有 var is360 = _mime("t ...