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

Cow Ski Area G---二维图转一维+tarjan缩点

1.二维转成一维,变成点图

2.tarjan缩点,变成简单DAG,然后就像“校园网校园网--tarjan求缩点的两个经典问题-CSDN博客

变成SCC,即强连通图

3.就像上面说的,特判环,正常情况输出max{in为0的点,ou为0的点}

P1653 [USACO04DEC] Cow Ski Area G - 洛谷

#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef  long long ll;
int n,m;
int a[505][505];
vector<int> mp[250004];
int low[250004],dfn[250004],sd[250004],cnt,c;
stack<int> st;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int ou[250004],in[250004];
void tarjan(int u)
{low[u]=dfn[u]=++cnt;st.push(u);for(int v:mp[u]){if(!dfn[v]){tarjan(v);low[u]=min(low[u],low[v]);}elseif(!sd[v]){low[u]=min(low[u],dfn[v]);}}if(dfn[u]==low[u]){sd[u]=++c;while(st.top()!=u){sd[st.top()]=c;st.pop();}st.pop();}
}
void dfs(int x,int y)
{int p1=(x-1)*m+y;for(int i=0;i<4;i++){int tx=x+dx[i];int ty=y+dy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m){if(a[x][y]>=a[tx][ty]){int p2=(tx-1)*m+ty;mp[p1].push_back(p2);}}}
}
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>m>>n;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++)///二维转一维 {for(int j=1;j<=m;j++){dfs(i,j);}}for(int i=1;i<=n*m;i++)///tarjan缩点 {if(!dfn[i]){tarjan(i);}}if(c==1) cout<<0;///是个环 else{for(int i=1;i<=n*m;i++){for(int v:mp[i]){if(sd[i]!=sd[v]){ou[sd[i]]++;in[sd[v]]++;}}}int s1=0,s2=0;for(int i=1;i<=c;i++){if(!ou[i])	s1++;if(!in[i])  s2++;}cout<<max(s1,s2); ///DAG变SCC的经典问题 }return 0;
}

http://www.xdnf.cn/news/7777.html

相关文章:

  • 嵌入式学习笔记 D24 :系统编程之i/o操作
  • 解决 Incorrect username or password (access token)
  • 数据库错误解决指南:从诊断到修复的全流程攻略
  • 04 接口自动化-框架封装思想建立之httprunner框架(上)
  • Fiddler 指定链接断点
  • nettrace工具介绍
  • GraphPad Prism工作表的管理
  • Baumer工业相机堡盟工业相机的工业视觉如何对高反光圆柱体生产日期进行识别检测
  • 8.MySQL故障排查与生产环境优化
  • 铸铁平台:承载千斤重担的工业基石
  • 视觉语言模型之困:当否定词成为理解的“盲区”
  • 挖o心得(2)
  • TYUT-企业级开发教程-第6章
  • CUMT-教务系统登录功能实现
  • labelme的安装与使用(以关键点检测为例)、labelme格式标签转换
  • 基础知识与协议
  • 迁移学习:让AI像人类一样举一反三的智慧引擎
  • CNN、RNN、Transformer对于长距离依赖的捕捉能力分析
  • Node.js AI 通义灵码 VSCode 插件安装与功能详解
  • 【Linux】48.高级IO(2)
  • Leetcode 01 java
  • 已解决:Git冲突完全解决指南(附最佳实践)
  • ANSI V 级对夹球阀控制阀:高性价比零泄漏流体控制新选择-耀圣
  • Windows下使用Windeployqt.exe打包后运行exe程序报错0xc000007b问题解决方法
  • 数组day2
  • 在hadoop中实现序列化与反序列化
  • YOLOv12和MAF-YOLO的核心技术细节
  • 软考软件评测师——软件工程之开发模型与方法
  • Java中的工具类Collections和Arrays
  • odoo-052 odoo启动提示:OSError: [Errno 98] Address already in use,端口占用