博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO--2.3Controlling Companies+dfs
阅读量:2227 次
发布时间:2019-05-09

本文共 963 字,大约阅读时间需要 3 分钟。

这个题目的困难之处在于处理间接持股的情况可能有多层,开始的时候我也没想清楚怎么处理这种情况后面参考了别人的想法才写出来的。其实对于间接持股的情况,我们可以在每次遇到直接控制情况时,用dfs将其转化为直接持股的情况,当然如果在dfs过程中遇到股份大于百分之五十的情况时还要继续dfs跟新下去。

代码如下:

/*ID:15674811LANG:C++PROG:concom*/#include
#include
#include
#include
#include
#include
using namespace std;#define maxn 110int n,vis[maxn][maxn],m[maxn][maxn];void dfs(int x,int y){ if(vis[x][y]) return ; vis[x][y]=1; for(int i=1;i<=100;i++) { if(i==x) continue; m[x][i]+=m[y][i]; if(m[x][i]>50&&!vis[x][i]) { dfs(x,i); } }}int main(){ ofstream fout("concom.out"); ifstream fin("concom.in"); ///ifstream fin("lkl.txt"); while(fin>>n) { memset(vis,0,sizeof(vis)); memset(m,0,sizeof(vis)); for(int i=1;i<=n;i++) { int x,y,w; fin>>x>>y>>w; m[x][y]=w; } for(int i=1;i<=100;i++) for(int j=1;j<=100;j++) { if(m[i][j]<=50) continue; dfs(i,j); } int flag=0; for(int i=1;i<=100;i++) for(int j=1;j<=100;j++) { if(i==j) continue; if(vis[i][j]) fout<
<<" "<
<

转载地址:http://jurfb.baihongyu.com/

你可能感兴趣的文章
springboot整合rabbitmq及rabbitmq的简单入门
查看>>
mysql事务和隔离级别笔记
查看>>
事务的传播属性(有坑点)自调用失效学习笔记
查看>>
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
查看>>
动态代理实现AOP
查看>>
23种常见的java设计模式
查看>>
关于被final修饰的基本数据类型一些注意事项
查看>>
java Thread中,run方法和start方法的区别
查看>>
在 XML 中有 5 个预定义的实体引用
查看>>
XML 元素是可扩展的
查看>>
避免 XML 属性?针对元数据的 XML 属性
查看>>
XML DOM nodeType 属性值代表的意思
查看>>
JSP相关知识
查看>>
JDBC的基本知识
查看>>
《Head first设计模式》学习笔记 - 适配器模式
查看>>
《Head first设计模式》学习笔记 - 单件模式
查看>>
《Head first设计模式》学习笔记 - 工厂方法模式
查看>>
《Head first设计模式》学习笔记 - 装饰者模式
查看>>
《Head first设计模式》学习笔记 - 模板方法模式
查看>>
《Head first设计模式》学习笔记 - 外观模式
查看>>