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

逃跑



链式前向星建图

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

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;
}
相关推荐
DuHz几秒前
《Around the Corner mmWave Imaging in Practical Environments》论文精读
论文阅读·算法·信息与通信·毫米波雷达
CoderYanger5 分钟前
D.二分查找-基础-2529. 正整数和负整数的最大计数
java·开发语言·数据结构·算法·leetcode·职场和发展
想唱rap6 分钟前
Linux下进程的控制
linux·运维·服务器·c++·算法
夏乌_Wx7 分钟前
练题100天——DAY25:升序合并文件+相交链表+多数元素
数据结构·算法·哈希算法
南_山无梅落9 分钟前
8.Python3字典(dict):键值的增删改查_入门到进阶
python·算法
柒.梧.13 分钟前
数据结构:二叉排序树,平衡二叉树,红黑树的介绍
数据结构·算法
Xの哲學16 分钟前
Linux ALSA音频架构: 从内核驱动到应用开发的全面解析
linux·服务器·算法·架构·边缘计算
是毛毛吧17 分钟前
数据结构与算法11种排序算法全面对比分析
数据结构·算法
郝学胜-神的一滴17 分钟前
Separate Buffer、InterleavedBuffer 策略与 OpenGL VAO 深度解析
开发语言·c++·程序人生·算法·游戏程序·图形渲染
长安er18 分钟前
LeetCode 102/103/513 二叉树层序遍历(BFS)三类经典题解题总结
数据结构·算法·leetcode·二叉树·bfs·层序遍历