POJ 3694 Network
生活随笔
收集整理的這篇文章主要介紹了
POJ 3694 Network
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
大意:讓你求無向圖的橋(割邊)
思路:一次查詢,重建一次圖,然后求一次割邊,TLE。去網上開了看資料,可以用LCA暴力查詢,唔,改天看看LCA。
TLE CODE:
#include?<iostream>#include?<cstdlib>
#include?<cstdio>
#include?<cstring>
#include?<queue>
using?namespace?std;
#define?MAXN?100010
#define?MAXM?500010
struct?Edge
{
????int?v,?next;
}edge[MAXM];
int?first[MAXN],?low[MAXN],?dfn[MAXN];
int?n,?m;
int?cnt;
int?scnt,?top,?tot;
int?nbridge;
void?init1()
{
????cnt?=?0;
????for(int?i?=?1;?i?<=?n;?i++)?first[i]?=?-1;
}
void?init2()
{
????scnt?=?top?=?tot?=?nbridge?=?0;
????for(int?i?=?1;?i?<=?n;?i++)?dfn[i]?=?0;
}
void?read_graph(int?u,?int?v)
{
????edge[cnt].v?=?v;
????edge[cnt].next?=?first[u],?first[u]?=?cnt++;
}
void?Tarjan(int?u,?int?fa)
{
????int?v;
????low[u]?=?dfn[u]?=?++tot;
????bool?repeat?=?0;
????for(int?e?=?first[u];?e?!=?-1;?e?=?edge[e].next)
????{
????????v?=?edge[e].v;
????????if(v?==?fa?&&?!repeat)
????????{
????????????repeat?=?1;
????????????continue;
????????}
????????if(!dfn[v])
????????{
????????????Tarjan(v,?u);
????????????low[u]?=?min(low[u],?low[v]);
????????????if(dfn[u]?<?low[v])?nbridge++;
????????}
????????low[u]?=?min(low[u],?dfn[v]);
????}
}
void?solve()
{
????init2();
????Tarjan(1,?-1);
????printf("%d\n",?nbridge);
}
int?main()
{
????int?times?=?0;
????while(scanf("%d%d",?&n,?&m)?&&?(n?||?m))
????{
????????init1();
????????while(m--)
????????{
????????????int?u,?v;
????????????scanf("%d%d",?&u,?&v);
????????????read_graph(u,?v);
????????????read_graph(v,?u);
????????}
????????int?Q;
????????scanf("%d",?&Q);
????????printf("Case?%d:\n",?++times);
????????while(Q--)
????????{
????????????int?u,?v;
????????????scanf("%d%d",?&u,?&v);
????????????read_graph(u,?v);
????????????read_graph(v,?u);
????????????solve();
????????}
????????printf("\n");
????}
????return?0;
}
?
?
轉載于:https://www.cnblogs.com/g0feng/archive/2012/11/04/2754245.html
總結
以上是生活随笔為你收集整理的POJ 3694 Network的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 商务经济与统计中涉及到的所有公式
- 下一篇: 谷歌软件工程师_这是我曾经在Google