题意

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

题解

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

代码

  1. #include <cstdio>
  2. #include <cstring>
  3. #define N 301
  4. int g[N][N];
  5. int f[N][N];
  6. bool c[N];
  7. int main(){
  8. int n,m,q;
  9. while(~scanf("%d%d%d",&n,&m,&q)){
  10. memset(g,0,sizeof g);
  11. memset(f,0,sizeof f);
  12. memset(c,0,sizeof c);
  13. for(int i=1,a,b;i<=m;++i){
  14. scanf("%d%d",&a,&b);
  15. g[a][b]=f[a][b]=1;
  16. }
  17. for(int k=1;k<=n;++k)
  18. for(int i=1;i<=n;++i)
  19. for(int j=1;j<=n;++j)
  20. f[i][j]+=f[i][k]*f[k][j];
  21. int ans=0;
  22. for(int i=1;i<=n;++i)
  23. for(int j=1;j<=n;++j)
  24. ans+=(f[i][j]>0);
  25. while(q--){
  26. int v;
  27. scanf("%d",&v);
  28. c[v]=!c[v];
  29. if(c[v]){//white->black
  30. for(int i=1;i<=n;++i){
  31. for(int j=1;j<=n;++j)
  32. f[i][j]-=f[i][v]*f[v][j];
  33. f[i][v]=f[v][i]=0;
  34. }
  35. }
  36. else{//black->white
  37. for(int i=1;i<=n;++i){
  38. for(int j=1;j<=n;++j)
  39. if(!c[i]&&!c[j]){
  40. f[v][i]+=g[v][j]*f[j][i];
  41. f[i][v]+=f[i][j]*g[j][v];
  42. }
  43. if(!c[i]){
  44. f[v][i]+=g[v][i];
  45. f[i][v]+=g[i][v];
  46. }
  47. }
  48. for(int i=1;i<=n;++i)
  49. for(int j=1;j<=n;++j)
  50. if(!c[i]&&!c[j])
  51. f[i][j]+=f[i][v]*f[v][j];
  52. }
  53. int ans=0;
  54. for(int i=1;i<=n;++i)
  55. for(int j=1;j<=n;++j)
  56. if(!c[i]&&!c[j]&&f[i][j])++ans;
  57. printf("%d\n", ans);
  58. }
  59. }
  60. return 0;
  61. }

【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. NYOJ-16-矩形嵌套 记忆化搜索

    #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...

  2. element ui主题色跟换

    node_modules\ element ui\ lib\ theme-dafault  下载的主题色替换掉改文件... ================== 但是会出现  搜索框iocon 样式换 ...

  3. (第十三周)Final Review会议

    项目名:食物链教学工具 组名:奋斗吧兄弟 组长:黄兴 组员:李俞寰.杜桥.栾骄阳.王东涵 Final Review会议 时间:2016.12.2   13:00——15:00 地点:冬华楼一楼大厅 会 ...

  4. (Beta)Let's-M2后分析报告

    设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 在M1阶段我们对用户需求进行了调研,同时M1阶段我们的开发目标就是为了解决用户发起.参与.查看.搜 ...

  5. ModelAttribute用法之一

    @ModelAttribute也可以做为Model输出到View时使用,比如: 测试例子   package com.my.controller; import java.util.ArrayList ...

  6. Liunx 简单的命令说明

    cd命令在linux中用来切换或者进入目录,路径还分为相对路径和绝对路径 cd 命令:切换当前目录至其他目录 cd /:加上斜杠表示是进入到根目录. pwd命令:查看当前路径. ()cd 进入用户主目 ...

  7. Mixing x86 with x64 code (混合编写x86和x64代码)

    几个月前我小小的研究了在WOW64下的32位进程中运行native x64代码. 第二个设想是在64位进程下运行x86代码.它们都是可以的,如我google的一样, 已经有人在使用这两种方法了: ht ...

  8. React Native之图片保存到本地相册(ios android)

    React Native之图片保存到本地相册(ios android) 一,需求分析 1,react native保存网络图片到相册,iOS端可以用RN自带的CameraRoll完美解决,但是andr ...

  9. MyBatis映射文件2(不支持自增的数据库解决方案/参数处理[单参、多参、命名参数])

    针对Oracle不支持自增的解决方案 Oracle不支持自增,但是它使用序列来模拟自增,每次插入数据的主键是从序列中拿到的值,那么如何获取这个值呢? <insert id="addEm ...

  10. 从Oracle数据库中查询前几个月数据时需要注意的一些问题

    在最近的一个项目中,有一个需求就是要查询数据库中前几个月的历史数据,但是由于自己考虑不全面造成了程序的bug,现在将这一块好好作一个总结,希望以后不再犯这种很低级的错误,首先贴出查询中用到的一个子函数 ...