当前位置: 首页 > news >正文

【拓扑排序topsort】——启动!!!

B3644 【模板】拓扑排序 / 家谱树

#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define pb push_back
#define PII pair<int,int >
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N = 1e6+5;
int n,m;
int in[N];
vector<int> v[N];
void topsort()
{vector<int> e;queue<int> q;for(int i=1;i<=n;i++) if(in[i]==0) q.push(i);while(q.size()){auto now = q.front();e.pb(now);q.pop();for(auto spot : v[now]){if(--in[spot]==0) q.push(spot);}}for(auto t:e) cout<<t<<" ";
}
signed main()
{IOS;cin>>n;for(int i=1;i<=n;i++){int x;while(cin>>x&&x!=0){v[i].pb(x);in[x]++;}}topsort();
}

P2712 摄像头

#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define pb push_back
#define PII pair<int,int >
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N = 1e6+5;
int n,m;
vector<int> v[N];
set<int> s;
int in[N];
int cnt=0;
void topsort()
{queue<int> q;for(int i=1;i<=510;i++) if(in[i]==0&&s.count(i)) {q.push(i);//没有摄像头看着并且该位置有摄像头} while(q.size()){auto now = q.front();cnt++;q.pop();for(auto spot:v[now]){if(--in[spot]==0&&s.count(spot))//这个摄像头照着的地方可能没有摄像头 {q.push(spot);} }}
}
signed main()
{IOS;cin>>n;for(int i=1;i<=n;i++){int x,m;cin>>x>>m;s.insert(x);while(m--){int y;cin>>y;v[x].pb(y);in[y]++;}}topsort();	if(cnt!=n) cout<<n-cnt;else cout<<"YES";	
}

P4017 最大食物链计数

#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define pb push_back
#define PII pair<int,int >
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N = 1e6+5;
int n,m;
int in[N];
int out[N];
int mod=80112002;
vector<int> v[N];
int dp[N];//表示有多少条不同的路径:生产者到i
void topsort()
{queue<int> q;for(int i=1;i<=n;i++){if(in[i]==0){q.push(i);dp[i] = 1;	}	}while(q.size()){int now = q.front();q.pop();for(auto spot:v[now]){dp[spot] = (dp[spot]+dp[now])%mod;if(--in[spot]==0) q.push(spot);}}
}
signed main()
{IOS;cin>>n>>m;for(int i=1;i<=m;i++){int a,b;cin>>a>>b;v[a].pb(b);// a被b吃in[b]++;out[a]++;}topsort();int sum=0;for(int i=1;i<=n;i++){if(out[i]==0) sum = (sum+dp[i])%mod;}cout<<sum;
}

P6145 [USACO20FEB] Timeline G

#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define pb push_back
#define PII pair<int,int >
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N = 1e6+5;
int n,m,k;
int in[N];
int va[N];
vector<PII> v[N];
int dp[N];//表示第i次挤奶最早为第几天
void topsort()
{queue<int> q;for(int i=1;i<=n;i++){if(in[i]==0){q.push(i);	}	}for(int i=1;i<=n;i++) dp[i] = va[i];//第i次挤奶最早是第S[i]天; while(q.size()){int now = q.front();q.pop();for(auto t:v[now]){int spot = t.fi,w = t.se;//dis[a] = 4,dis[b] = 5//a -> spot至少3天 b-> spot至少5天//那么dis[spot] = 10//因为要求最早的日期,那么第几天要尽可能大 dp[spot] = max(dp[spot],dp[now]+w); if(--in[spot]==0) q.push(spot);}}
}
signed main()
{IOS;cin>>n>>m>>k;for(int i=1;i<=n;i++) cin>>va[i];while(k--){int a,b,c;cin>>a>>b>>c;v[a].pb({b,c});in[b]++;}topsort();for(int i=1;i<=n;i++) cout<<dp[i]<<"\n";
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 高清无水印视频素材哪里找?分享几个热门的高清无水印素材网站
  • html语法
  • mysql源码编译启动debug
  • 东方博宜24年8月-C组 - 屋顶
  • C++ | Leetcode C++题解之第328题奇偶链表
  • unity草体渲染方案 GPU Instaning
  • 数据结构(学习)2024.8.6
  • 数据库原理之多表查询——使用Mysql进行内连接和外连接
  • 【学习方法】高效学习因素 ② ( 学习动机 | 内在学习动机 | 外在学习动机 | 外在学习动机的调整方向 | 保护学习兴趣 | 高考竞争分析 )
  • 使用MailKit在.NET Core中收发邮件的完整示例
  • 『 Linux 』线程池与 POSIX 线程的封装编码实现
  • 无人机PX4飞控 | 电源系统详解与相关代码
  • Flask+LayUI开发手记(一):LayUI表格的前端数据分页展现
  • 高级java每日一道面试题-2024年8月06日-web篇-cookie,session,token有什么区别?
  • 【Material-UI】Autocomplete中的禁用选项:Disabled options
  • .pyc 想到的一些问题
  • Angular数据绑定机制
  • ES2017异步函数现已正式可用
  • HTML-表单
  • Invalidate和postInvalidate的区别
  • JavaScript 基本功--面试宝典
  • java小心机(3)| 浅析finalize()
  • k8s 面向应用开发者的基础命令
  • Linux gpio口使用方法
  • Node项目之评分系统(二)- 数据库设计
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • springboot_database项目介绍
  • supervisor 永不挂掉的进程 安装以及使用
  • TypeScript实现数据结构(一)栈,队列,链表
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务入门【系列视频课程】
  • 我有几个粽子,和一个故事
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 怎样选择前端框架
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Spring第一个helloWorld
  • # dbt source dbt source freshness命令详解
  • #预处理和函数的对比以及条件编译
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (备份) esp32 GPIO
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (区间dp) (经典例题) 石子合并
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)基于IDEA的JAVA基础12
  • (转)Oracle存储过程编写经验和优化措施
  • ./和../以及/和~之间的区别
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息