%%%奎老师

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. POJ 2965 The Pilots Brothers' refrigerator

    题目链接 题意:一个冰箱上有4*4共16个开关,改变任意一个开关的状态(即开变成关,关变成开)时,此开关的同一行.同一列所有的开关都会自动改变状态.要想打开冰箱,要所有开关全部打开才行. 输入:一个4 ...

  2. lazyload

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. 虚拟机中的centos在nat模式下连不上外网

    这两天需要配置ftp服务器,可是虚拟机在nat模式下死活连不上外网,主机能够通过该ssh与虚拟机进行连接,虚拟机也能ping同一网段主机的IP地址,但就是ping不通外网, 开始我是这样配置的: 主机 ...

  4. 阻塞队列BlockingQueue 学习

    import java.util.Random; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Time ...

  5. PullToRefreshScrollView嵌套SwipeMenuListView冲突问题解决

    参考: http://blog.csdn.net/u012255016/article/details/46048797 public class NoScrollSwipeMenuListView ...

  6. md5sum

    [root@NB index]# ls index()().html index()().html index()().html index()().html index()().html [root ...

  7. Vs 控件错位 右侧资源管理器文件夹点击也不管用,显示异常

    问题:显卡驱动异常. 缘由:驱动精灵万能显卡安装系统 解决方案:根据笔记本型号去官网下载适配显卡驱动.

  8. eclipse中的任务标记(TODO、FIXME、XXX)

    eclipse Task Tags: TODO -用来提醒该标识处的代码有待返回继续编写.更新或者添加.该标签通常在注释块的源文件顶部. FIXME -该标签用来提醒你代码中存在稍后某个时间需要修改的 ...

  9. Delphi函数指针

    参考:http://blog.chinaunix.net/uid-91034-id-2009700.html http://blog.csdn.net/procedure1984/article/de ...

  10. ODATA WEB API(二)----ODATA服务与客户端

    一.概述 ODATA不经可以作为WebAPI建立相应的WEBAPI控制器,还可以建立ODataControl控制器,能够通过插件建立第三方ODataClinet类库:调用和使用数据变得简单可行. 二. ...