简谈图论重要性&&图论总结

本文介绍了图论在解决问题中的重要性,特别是在OI竞赛中的应用。内容包括链式前向星建图、邻接表、树形DP、二分图、Floyd算法等关键概念,并提供了相关例题及总结方法,强调了理解和掌握这些技巧对于解决复杂问题的价值。
摘要由CSDN通过智能技术生成

从外地学习回来,我对图论才有认识(以前就没接触过,非常尴尬),说实话,学好图论的重要性,就像学数学时在进行解析几何时,图极有可能是打开答案的最后秘钥,也就是数形结合,而懂的人永远明白,用图解决绝对比用解析简单(一般情况)。而图论对于oi选手说,就是一大杀器,有可能利己,也可能抱憾终身。所以说图论的重要性就很显然了。

 

大家在进入图论的时候,应该先掌握链式前向星建图,当然也可以叫邻接表,先附上我喜欢的模板

struct node{
    int next,to,w;
}edge[maxn<<4];

int head[maxn],cent;

void add(int u,int v,int w){
    edge[++cent]=(node){head[u],v,w}; head[u]=cent;
}

  

  ——所谓模板,也就是自己喜欢的颜色涂上而已。

 

  当然还有一些其他知识,比如说vector建图,这种建图的方式优点是难度小,而且还可以排序,这个在NOIP2018的D2T1上有极大优势。

scan(a),scan(b);
vec[a].push_back(b);
vec[b].push_back(a);

  然后只要简单地定义排序一下,即可用食。

  还有树形dp,这在树形图中将是一大助力,这里是dp求直径。

void dp(int s,int fa){
    for(int i=head[s];i;i=edge[i].next){
        int y=edge[i].to;
        if(vi[y]) continue;
        if(y==fa) continue;
        dp(y,s);
        an=max(anx,root[x]+root[y]+edge[i].w);
        root[s]=max(root[s],root[y]+edge[i].w);
    }
}

  在入门之后,请仔细思考与总结

  总结方法:

  1. 反向建边 例题

  2. 路径记数,加法原理,并加上限制条件 例题

  3. 巧妙运用二分图的检验 例题

  4. 学习二分图的技巧,学会在只有两种条件有关系时,转化成二分图 例题

  5. 深刻理解floyd的逐个点处理 例题

  6. 二分答案对于路径长度和其他条件的单调性处理 如4中例题

  7. 分清SPFA(没死透)和Dij两者各自的优势,注意负环

  8. 在最小生成树中,注意prim和kruskal各自的优势

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值