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

P3008 [USACO11JAN] Roads and Planes G

P3008

连通块统计后,形成DAG

核心解法

解法深研思未休,
图论算法解绸缪。
负权路径何所惧,
拓扑排序定风流。 

/*
解法深研思未休,
图论算法解绸缪。
负权路径何所惧,
拓扑排序定风流。
*/
#include<bits/stdc++.h>
using namespace std;
int INF = 1e9+7; 
int n,r,p,s;
int d[100100];//所属连通块
int dis[100010];
bool vis[100010];
queue<int> t;//拓扑排序 
vector<int> block[25010];//连通块点集 
int pd[100100];//是否为顶点; 
int in[100100],tot;
struct ede{int v,w;bool operator <(const ede a)const{return w > a.w;}
};
vector<ede> g[100010];
void dfs(int u,int t) {//染色 if(d[u])return;d[u] = t; block[t].push_back(u);for(ede vis:g[u]){int v = vis.v;dfs(v,t);}
}
void dijk(int s){//对连通块 S 进行dijkpriority_queue<ede> q;for(int v:block[s]){if(pd[v]){//  cout<<" "<<v<<" "<<dis[v]<<endl;q.push({v,dis[v]});}}while(!q.empty()){ede tp = q.top();q.pop();int u = tp.v;if(vis[u])continue;vis[u] = 1;//cout<<u<<endl;for(ede vised:g[u]){int v = vised.v,w = vised.w;//cout<<u<<" "<<v<<" "<<w<<endl;if(dis[v] > dis[u]+w){dis[v] = dis[u]+w;if(d[v] == d[u]&&!vis[v]){q.push({v,dis[v]}); }}}}} 
vector<int> b[30001];
void topu(int S){for(int i = 1;i <= tot;i++){if(in[i] == 0)t.push(i);}dis[S] = 0;pd[S] = 1;while(!t.empty()){int u = t.front();t.pop();//cout<<u<<endl;dijk(u);for(int v:b[u]){in[v]--;if(in[v] == 0){t.push(v);}}}
}
int main(){memset(dis,0x3f,sizeof(dis));cin>>n>>r>>p>>s;for(int i = 1;i <= r;i++){int u,v,w;cin>>u>>v>>w;g[u].push_back({v,w});g[v].push_back({u,w});}for(int i = 1;i <= n;i++){if(!d[i]){tot++;dfs(i,tot);}}for(int i = 1;i <= p;i++){int u,v,w;cin>>u>>v>>w;g[u].push_back({v,w});in[d[v]]++;pd[v] = 1;b[d[u]].push_back({d[v]});}topu(s);for(int i = 1;i <= n;i++){if(dis[i] > INF/2){cout<<"NO PATH"<<endl;}else{cout<<dis[i]<<endl;}}
} 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 24.8.3数据结构|双向循环链表、静态链表
  • 在大语言模型中,我们每次输入的语句长度不同,这样会影响结果吗;在大语言模型中,训练中每次的输入长度都是不一样的,但是是一样权重矩阵,不足的话是补 0吗;;;
  • 前端day7-css选择器
  • 国产AI大模型:从萌芽到繁盛,未来可期
  • uniapp vue3 转换华为鸿蒙(以及问题一些解决方案)
  • 基于javaweb的乡村旅游网站/旅游网站的设计与实现
  • html5各行各业官网模板源码下载(3)
  • 【EtherCAT】Windows+Visual Studio配置SOEM主站——静态库配置+部署
  • 暑期数据结构 空间复杂度
  • GPT-4o mini模型:小型化AI解决方案的创新应用案例
  • LeetCode.27.移除元素
  • JVM(面试用)
  • Aigtek超声功率放大器在建筑结构检测中的应用
  • 企业需要了解的平滑替代FTP 的文件传输软件知识
  • 2.1 Python的语法特点
  • 网络传输文件的问题
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Android组件 - 收藏集 - 掘金
  • Apache的基本使用
  •  D - 粉碎叛乱F - 其他起义
  • Git 使用集
  • iOS 系统授权开发
  • JavaScript 奇技淫巧
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Logstash 参考指南(目录)
  • markdown编辑器简评
  • mysql中InnoDB引擎中页的概念
  • Python 反序列化安全问题(二)
  • SpriteKit 技巧之添加背景图片
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • uni-app项目数字滚动
  • vuex 学习笔记 01
  • 读懂package.json -- 依赖管理
  • 回流、重绘及其优化
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小程序开发中的那些坑
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​水经微图Web1.5.0版即将上线
  • ‌移动管家手机智能控制汽车系统
  • ${factoryList }后面有空格不影响
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (02)Unity使用在线AI大模型(调用Python)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (9)目标检测_SSD的原理
  • (arch)linux 转换文件编码格式
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (pojstep1.3.1)1017(构造法模拟)
  • (web自动化测试+python)1
  • (办公)springboot配置aop处理请求.
  • (第一天)包装对象、作用域、创建对象