逃跑【蓝桥杯】/链式前向星建图

逃跑



链式前向星建图

这一题主要想学习一下链式前向星,附上别人的思路

cpp 复制代码
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
struct edge
{
    int v,ne;
};
edge e[2000006];
int h[1000006];
int cnt;
void add(int u,int v)
{
    e[++cnt]={v,h[u]};
    h[u]=cnt;
}
int t;
double f[1000006];
bool flag[1000006];
double p;
void dfs(int u,int fa)
{
    if(flag[u]) t++;
    for(int i=h[u];i;i=e[i].ne)
    {
        int v=e[i].v;
        if(v==fa) continue;
        if(flag[u]) f[v]=f[u]+1;
        else f[v]=f[u]+pow(p,t);
        dfs(v,u);
    }
    if(flag[u]) t--;
}
int main()
{
    ll n,m;
    cin>>n>>m>>p;
    for(int i=0;i<n-1;i++)
    {
        int u,v;
        cin>>u>>v;
        add(u,v);
        add(v,u);
    }
    for(int i=0;i<m;i++)
    {
        int a;
        cin>>a;
        flag[a]=1;
    }
    dfs(1,0);
    double sum=0;
    for(int i=1;i<=n;i++) sum+=f[i];
    printf("%.2f",sum/(double)n);
    return 0;
}
相关推荐
papership2 分钟前
【入门级-数据结构-3、特殊树:完全二叉树的数组表示法】
数据结构·算法·链表
smj2302_796826526 分钟前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode
Beginner x_u1 小时前
链表专题:JS 实现原理与高频算法题总结
javascript·算法·链表
_深海凉_4 小时前
LeetCode热题100-寻找两个正序数组的中位数
算法·leetcode·职场和发展
旖-旎5 小时前
深搜练习(电话号码字母组合)(3)
c++·算法·力扣·深度优先遍历
谭欣辰5 小时前
C++快速幂完整实战讲解
算法·决策树·机器学习
Mr_pyx5 小时前
【LeetHOT100】随机链表的复制——Java多解法详解
算法·深度优先
AIFarmer5 小时前
【无标题】
开发语言·c++·算法
AGV算法笔记6 小时前
CVPR 2025 最新感知算法解读:GaussianLSS 如何用 Gaussian Splatting 重构 BEV 表示?
算法·重构·自动驾驶·3d视觉·感知算法·多视角视觉
勤劳的进取家6 小时前
数据链路层基础
网络·学习·算法