首页 > 其他分享 >9月做题记录

9月做题记录

时间:2023-09-21 20:45:01浏览次数:28  
标签:记录 int top ++ add dfn 做题 low

Part 1.图论

 

1.分层图最短路

 

P3119 [USACO15JAN] Grass Cownoisseur G

主要是需要缩点,分层图最短路就比较板了。

#include<bits/stdc++.h>
using namespace std;
const int N=500005;
//要先缩点! 
int n,m,h[N],e[N],ne[N],idx =1,deg[N],f[N];
int dfn[N],low[N],tmp,q[N],indx,scc[N],tot,num[N],top;
void add(int a,int b){
    e[idx] = b;
    ne[idx] = h[a];
    h[a]=idx++;
}
void tarjan(int u)
{
    dfn[u]=low[u]=++tmp;
    q[++top] = u;
    for(int i=h[u],v;i;i=ne[i]){
        int j=e[i];
        if(!dfn[j]){
            tarjan(j);
            low[u]=min(low[u],low[j]);
        }else if(!scc[j]){
            low[u] = min(low[u],dfn[j]);
        }
    }
    if(dfn[u]==low[u]){
        ++tot;
        do{
            ++num[scc[q[top]] = tot];
        }while(q[top--]!=u);
    }
}
vector<int>g[N];
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int x,y;
        cin>>x>>y;
        add(x,y);
        add(y,x+n);
        add(x+n,y+n);
    }
    tarjan(1);
    for(int i=1;i<=n*2;i++){
        if(dfn[i]){
            for(int k=h[i];k;k=ne[k]){
                int j=e[k];
                if(scc[i]!=scc[j]){
                    g[scc[i]].push_back(scc[j]),++deg[scc[j]];
                }
            }
        }
    }
    int l=0,r=0;
    for(int i=1;i<=tot;i++){
        if(!deg[i]) q[r++] = i;
        f[i]=-0x3f3f3f3f;
    }
    while(l < r){
        int u= q[l++];
        if(u==scc[1]) f[u]=0;
        for(int i=0;i<g[u].size();i++){
            int v=g[u][i];
            if(!--deg[v]) q[r++] = v;
            f[v] = max(f[v],f[u]+num[v]);
        }
    }
    cout<<f[scc[n+1]];
    return 0;
}

 

标签:记录,int,top,++,add,dfn,做题,low
From: https://www.cnblogs.com/Miya555/p/17720901.html

相关文章

  • 萌新学习C语言记录
    今天在牛客网上写了几道题有一个题是把几个十位数字放到一个集合中一开始用char%c发现只能输出十位数字,个位数字被吞掉了之后又用了int%d发现成功把几个十位数字放到一个集合中这可能就是新手常犯的错误了吧......
  • STM32学习——缩写记录
     GPIOGeneralPurposeInputOutput通用输入/输出端口每个GPIO端口可通过软件分别配置成输入或输出;输出又分为推挽式(Push-Pull)和开漏式(Open-Drain)USARTUniversalSynchronous/AsynchronousReceiver/Transmitter通用同步/异步串行接收/发送器支持全双工操作;可设置波特......
  • 关于Alist的美化记录●其一
    前言:近期心血来潮想搭建个个人的媒体服务器,在处理好域名及内网后看着Alist网盘总感觉少了点什么,故尝试对其进行简单美化。本次美化纯取悦自己,该随笔不一定有下文。 目前仅做了背景的相关改动,其余的慢慢摸索,其他终端的背景设置以右端显示,实际效果一般,播放器的引用还在摸索中,......
  • 一些H5对接微信JSSDK的问题记录
    这里给大家分享我在实际生活中总结出来的一些知识,希望对大家有所帮助一.SDK引入这里提供两套引入流程,一套是vue2.0及其他h5项目,一套是vue3.0的引入流程不懂的也可以看我之前的一篇详细流程记录--微信调用jssdk全流程详解1.js引入直接在你的页面里引入js文件就行<scriptsr......
  • 记录一次:Winform的控件的Visible属性异常问题
    一:背景1.讲故事有一次同事找到我,说以下代码中:btnPlanAppend控件:客户电脑显示正常、开发者电脑调试时无法显示btnAppend可以在界面中显示出来btnPlanAppend控件在界面上就是不显示privatevoidCheck_Privilege(){stringsPrivilege=ClientUtils.GetPrivilege(g_sU......
  • RHEL5 上安装 oracle10g 中出现的问题记录
    1.不能启动安装界面运行runInstaller提示信息类似如下:xlib:connectionto"localhost:0.0"refusedbyserverxlib:clientisnotauthorizedtoconnecttoserver Exceptioninthread"main"java.lang.InternalError:can'tconnecttox11windowserverusing......
  • 单独记录内网渗透时如何使用命令行允许远程访问+开启3389端口
    单独记录内网渗透时如何使用命令行允许远程访问+开启3389端口实验开始(注意是管理员的身份)1.允许远程访问的命令regadd"HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer"/vfDenyTSConnections/tREG_DWORD/d0/f2.开启3389端口regadd"HKLM\SYSTEM\Curren......
  • 杂题记录
    CF1771DHossamand(sub-)palindromictree题目链接一个小trick。考虑如果不是在树上,而是在序列上的话,那就设\(f(l,r)\)表示区间\([l,r]\)中的最长的回文串,转移方程为:\[f(l,r)=\max\{f(l+1,r),f(l,r-1),f(l+1,r-1)+2\times[s_l=s_r]\}\]那么转换到树上,就可以设\(p(u,v)......
  • MySQL中row_number()的实现,查询记录排序行数
    MySQL中row_number()的实现,查询记录排序行数时间  2019-12-06标签 mysql row number 实现 查询 记录 排序 行数 栏目 MySQL 繁體版原文   https://my.oschina.net/u/3087202/blog/1842169  在MySQL8.0之前是有没row_number()这个窗口函数的,若是想实......
  • MySQL压缩包安装问题记录Can't connect to MySQL server on localhost (10061)解决方
    本文章向大家介绍MySQL问题记录--Can'tconnecttoMySQLserveronlocalhost(10061)解决方法,主要包括MySQL问题记录--Can'tconnecttoMySQLserveronlocalhost(10061)解决方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下......