首页 > 其他分享 >E - Reachability in Functional Graph

E - Reachability in Functional Graph

时间:2024-06-11 10:11:06浏览次数:14  
标签:200005 int Graph Functional Reachability abc357 size deg

E - Reachability in Functional Graph

https://atcoder.jp/contests/abc357/tasks/abc357_e

 

思路

概念:

基环树-内生树。

https://www.cnblogs.com/Dfkuaid-210/p/14696378.html


方法:

使用拓扑排序,从入度为0的点开始,依此从外层向内层拆点,直到剩下环, 拆换过程中把拆掉的size记到目标点上size,依次累计到环点上。

最后统计环点上的所有点的size之和。

 

 


 

 

 

Code

https://atcoder.jp/contests/abc357/submissions/54442574

#include <bits/stdc++.h>
using namespace std;
#define int long long
int to[200005],deg[200005],sz[200005];
vector<int>v;
int sum=0;
void dfs(int u){
    deg[u]=0;
    v.push_back(u);
    sum+=sz[u];
    if(deg[to[u]])dfs(to[u]);
}
signed main(){
    int n;
    cin>>n;
    queue<int>q;
    for(int i=1;i<=n;i++)cin>>to[i],sz[i]=1,deg[to[i]]++;
    for(int i=1;i<=n;i++)if(deg[i]==0)q.push(i);
    while(!q.empty()){
        int u=q.front();
        q.pop();
        deg[to[u]]--;
        sz[to[u]]+=sz[u];
        if(deg[to[u]]==0){
            q.push(to[u]);
        }
    }
    for(int i=1;i<=n;i++){
        if(deg[i]){
            sum=0;
            v.clear();
            dfs(i);
            for(int a:v)sz[a]=sum;
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        ans+=sz[i];
    }
    cout<<ans;
}
/*
things to check
0.delete cerr code or use '//'
1.initallize(especially multicases)
2.int overflow/long long mle
3.if make the ans is hard , try 2-divided
4.memory &b-&a
5.function canshu position
6.the format of input
7.size enough ?
8.the name of function
9.stop copying x0->y0
*/

 

标签:200005,int,Graph,Functional,Reachability,abc357,size,deg
From: https://www.cnblogs.com/lightsong/p/18241600

相关文章

  • C++数据结构之:图Graph
    摘要:  it人员无论是使用哪种高级语言开发东东,想要更高效有层次的开发程序的话都躲不开三件套:数据结构,算法和设计模式。数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结......
  • CorelDRAW 全称“CorelDRAW Graphics Suite
    箭头在各种场景中被广泛使用。在设计中,设计师可以根据设计的目的和受众,巧妙地运用箭头来传达信息、创造视觉效果或引导观者的注意力。在CDR软件中可以为设计添加箭头,那具体该怎么做呢?下面由我带大家一起来了解CoreIDRAW箭头形状工具在哪里,CoreIDRAW箭头形状怎么改成曲线的相关......
  • Count BFS Graph
    CountBFSGraph题目信息LuoguCF1906J、Codeforces1906J题面翻译对于一个\(n\)个节点的无向图的邻接矩阵\(M\),满足\(M_{i,i}=0,M_{u,v}=M_{v,u}\),\(M_{i,j}=1\)表示\(M_{i,j}\)右边,进行下面的bfs生成\(A\)数组。BFS(): 清空数组A,清空队列Q在A中......
  • linux 系统上图形生成错误 java.lang.NoClassDefFoundError: Could not initialize cl
    错误信息:02-Jun-202409:11:09.421SEVERE[Thread-32]org.apache.catalina.core.StandardWrapperValve.invokeServlet.service()forservlet[springDispatcherServlet]incontextwithpath[]threwexception[Handlerdispatchfailed;nestedexceptionisjava.lang.......
  • GraphEdit论文阅读笔记
    GraphEdit:LargeLanguageModelsforGraphStructureLearning论文阅读笔记读一下图结构学习的论文,找找灵感Abstract​ 图结构学习(GSL)侧重于通过生成新的图结构来捕获图结构数据中节点之间的内在依赖性和交互作用。许多现有的GSL方法严重依赖于显式的图结构信息作为监督信......
  • echarts渐变内置生成器echarts.graphic.LinearGradient
    在使用echarts绘制图表时,如果需要使用渐变色,则应使用echarts内置的渐变色生成器echarts.graphic.LinearGradientseries:[{name:'',type:'bar',barMaxWidth:20,label:{show:true,color:'#fff',},......
  • open graph 简述
    场景在我们使用twitter的时候,会发现有的链接会显示预览卡片,有的不会。这是因为有的网站设置了opengraph,有的没有。那么什么是opengraph?opengraph是一个由facebook在2010年发布的协议,用于在社交网络上分享链接时,显示预览卡片。我觉得无论是它的名称还是意图,都能看出fac......
  • NodeJs + GraphQl 基于Apollo Server (2)
     基于上一篇的项目继续深入学习和介绍项目中如何使用GraphQl.本篇更侧重于实际项目中使用GraphQL.如果还没有了解基本的GraphQl知识和没用想要新建项目开始演练的可从上一篇开始如何在NodeJs搭建GraphQLserviceApolloServer(1).1.重构app.js和service.mjs 1.1修改s......
  • 测试C#GDI+双缓冲高效绘图--BufferedGraphicsContext
    奥斯卡好的b、测试C#GDI+双缓冲高效绘图```#regionC#GDI+双缓冲高效绘图#regiontemp//Rectanglerectangle=e.ClipRectangle;//取出次窗体或者画布的有效区的矩形区域//BufferedGraphicsContextGraphicsContext=BufferedGraphicsM......
  • LGMRec Local and Global Graph Learning for Multimodal Recommendation
    目录概符号说明MotivationLGMRecLocalGraphEmbeddingGlobalGraphEmbeddingFusion代码GuoZ.,LiJ.,LiG.,WangC.,ShiS.andRuanB.LGMRec:Localandglobalgraphlearningformultimodalrecommendation.AAAI,2024.概本文采用分解的方法进行对ID和模态信......