%%%奎老师

A:傻逼缩点。。。傻逼编译器卡我next。。。

B:就是这道奎老师没讲清楚的题,明明小朋友们都一A嘛,,,明明细节有很多嘛,,,怎么都这么熟练啊。

C:本质还是B,换了个马甲而已。

D:又是缩点,缩完点之后每个入度为1的强连通分量找一下最小值就好啦。。。

I:这就是在求桥了,ok现在来总结一下,有向图中缩点叫强连通分量,求桥与割点,LCA都是在无向图中。然后我又求错了,我在求桥的时候直接算了权值差。。。。看了网上题解,还是乖乖缩点+树形dp吧。。。。QAQ【这里做了双联通之后,就不用求桥啦】有重边,要注意以下。

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define N 50000
using namespace std;
int edgenum,n,edgenew,m,all,flag,tm,bian,ans,id,top;
int jie[N],num[N],p[N],head[N],size[N],vet[N],uu[N],vv[N],yt[N],low[N],dfn[N],a[N],headnew[N],vetnew[N],nextnew[N],stack[N];
void add(int u,int v)
{
  edgenum++;vet[edgenum]=v;jie[edgenum]=head[u];head[u]=edgenum;
}
void tarjan(int u,int fa)
{
  tm++;dfn[u]=low[u]=tm;top++;stack[top]=u;
  ;
  )
  {
    int v=vet[e];
    ){
      flag=;e=jie[e];continue;
    }
    )tarjan(v,u);
    low[u]=min(low[u],low[v]);//printf("low==%d %d\n",u,v);
    e=jie[e];
  }
  if(dfn[u]==low[u]){
    id++;num[id]+=a[u];yt[u]=id;
    while(stack[top]!=u)
    {
      int k=stack[top];yt[k]=id;num[id]+=a[k];
      top--;
    }top--;
  }
}
void Add(int u,int v)
{
  edgenew++;vetnew[edgenew]=v;nextnew[edgenew]=headnew[u];headnew[u]=edgenew;
  //printf("add====%d %d\n",u,v);
}
void dp(int u,int fa)
{
  int e=headnew[u];size[u]=num[u];
  //printf("%d\n",u);
  )
  {
    int v=vetnew[e];//printf("%d\n",v);
    if(v!=fa)dp(v,u),size[u]+=size[v];
    e=nextnew[e];
  }
  )x=-x;
  ans=min(ans,x);
}
int main()
{
  while(scanf("%d%d",&n,&m)!=EOF)
  {
    edgenum=;edgenew=;memset(headnew,,sizeof(headnew));
    memset(head,,,,,sizeof(size));
    all=;tm=;bian=;id=top=;
    memset(low,,,sizeof(dfn));
    ;i<=n;i++)scanf("%d",&a[i]),all+=a[i];int u,v;
    ;i<=m;i++)scanf("%d%d",&u,&v),u++,v++,uu[i]=u,vv[i]=v,add(u,v),add(v,u);
    tarjan(,);
    //for(int i=1;i<=n;i++)printf("id==%d\n",low[i]);
    ){

        printf("impossible\n");continue;
      }
    ;i<=m;i++)
    {
      u=yt[uu[i]],v=yt[vv[i]];
      if(u!=v)Add(u,v),Add(v,u);
    }
    ans=;
    dp(,);
    printf("%d\n",ans);
  }
  ;
 } 

双联通

J: 来自hdu2460.。。。。。网上随手找个std发现都是暴力。。。这个世界太不真诚了。

题意大概是求加上新边后桥的数目。。。。这里需要求LCA。。。和双连通分量。

P:树上的LCA,网上90percent的题解用这种做法都会MLE。。。晕。。。不过最后还是过了,有个蛮坑的点是求自己和自己的lca

  顺便发现自己连倍增法求LCA都忘了。有空练。

T:这个是真的,不作死就不会死。听说这道题在罗oj交过哦,听说我当时还是p党哦。然后由于懒得码就。。。嘿嘿嘿

【noip暑假tarjan专题】的更多相关文章

  1. NOIp 图论算法专题总结 (2)

    系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 树链剖分 https://oi-wiki.org/graph/heavy-lig ...

  2. NOIp 图论算法专题总结 (1):最短路、最小生成树、最近公共祖先

    系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 最短路 Floyd 基本思路:枚举所有点与点的中点,如果从中点走最短,更新两点间 ...

  3. NOIp 图论算法专题总结 (3):网络流 & 二分图 简明讲义

    系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 网络流 概念 1 容量网络(capacity network)是一个有向图,图的 ...

  4. NOIP 考前 Tarjan复习

    POJ 1236 给定一个有向图,求: 1) 至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点 2) 至少要加多少条边,才能使得从任何一个顶点出发,都能到达全部顶点 第一个就是缩点之后有多少 ...

  5. Tarjan专题

    前排Orz tarjan tarjan算法在图的连通性方面有非常多的应用,dfn和low数组真是奥妙重重(并没有很搞懂反正背就完事了) 有向图强连通分量 #include<iostream> ...

  6. Poj 3233 矩阵快速幂,暑假训练专题中的某一道题目,矩阵快速幂的模板

    题目链接  请猛戳~ Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 ...

  7. 校际联合Contest

    每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...

  8. NOIP赛前集训备忘录(含每日总结)(日更?。。。)

    NOIP赛前集训备忘录(含每日考试总结) 标签: 有用的东西~(≧▽≦)/~啦啦啦 阅读体验:https://zybuluo.com/Junlier/note/1279194 考试每日总结(这个东西是 ...

  9. Collections 索引

    About Me NOIp 数据结构专题总结 NOIp 图论算法专题总结 NOIp 基础数论知识点总结 NOIp 数学知识点总结 搜索算法总结 (不包含朴素 DFS, BFS) 位运算 字符串算法总结 ...

随机推荐

  1. iOS计算字符串的宽度高度

    OC开发中会遇到根据字符串和字体大小来算计算出字符串所占的宽高->> 封装方法如下: #import <Foundation/Foundation.h> #import < ...

  2. 图像特征提取之LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietik?inen ...

  3. Android 菜单定制使用小结

    GridView 添加 ArrayAdapter<Bean>, 在 gridView 的 Item 点击之后, 1.list.add(bean)/remove(bean) 2.adapte ...

  4. set -x 跟踪脚本执行信息

    注意set -x其中"-"与"x"之间没有空格 [root@GitLab sh]# ./sx.sh heelo + a=heelo + echo heelo h ...

  5. 【Jquery】【控件】flexigrid 自定义查询

    最近用flexigrid作报表,需要自定义条件进行查询,界面如下: 翻了半天文档也没找到如何用POST方法自行传递参数进行查询. 找了一个台湾人写的博客,却要改flexigrid的源代码,更不靠谱. ...

  6. jQuery插件:跨浏览器复制jQuery-zclip(转载)

    转载地址:http://www.cnblogs.com/linjiqin/p/3532451.html jQuery-zclip是一个复制内容到剪贴板的jQuery插件,使用它我们不用考虑不同浏览器和 ...

  7. 在ubuntu上搭建开发环境4---ubuntu简单的搭建LAMP环境和配置

    最近重新安装了Ubuntu,但是之前的LAMP环境自然也就没有了,实在是不想再去编译搭建LAMP环境(这种方法实在是太费时间,而且太容易遇到各种不知道为什么的错误),所以,就去查查有没有什么简单的搭建 ...

  8. 【翻译二十一】java-并发之分拆和合并

    Fork/Join This section was updated to reflect features and conventions of the upcoming Java SE 8 rel ...

  9. 使用pl/sql監控PROCEDURE執行時間

    創建表 CREATE TABLE PROCESS_TIMING_LOG (   PROCESS_NAME       VARCHAR2(50 BYTE),   EXECUTION_DATE     D ...

  10. php判断当前的访问是手机还是电脑

    <?php function check_wap() { if (isset($_SERVER['HTTP_VIA'])) return true; if (isset($_SERVER['HT ...