题目地址:ZOJ 2588
因为数组开小了而TLE了。。这题就是一个求无向连通图最小割边。只要判断dfn[u]是否
代码如下;
#include #include #include #include #include #include #include #include #include #include #include using namespace std; int head[20020], cnt, index1, ans; int low[20103], dfn[20103], road[20103]; struct node { int num, u, v, next, tag; } edge[220000]; void add(int num, int u, int v) { int i; for(i=head[u]; i!=-1; i=edge[i].next) { if(edge[i].v==v) break; } if(i!=-1) { edge[i].tag=1; return ; } edge[cnt].tag=0; edge[cnt].num=num; edge[cnt].v=v; edge[cnt].next=head[u]; head[u]=cnt++; } void tarjan(int u, int fa) { low[u]=dfn[u]=++index1; for(int i=head[u]; i!=-1; i=edge[i].next) { int v=edge[i].v; if(v==fa) continue ; if(!dfn[v]) { tarjan(v,u); low[u]=min(low[u],low[v]); if(dfn[u]