迷宫城堡 HDU - 1269

原创 2018年04月17日 21:13:36

原oj网址点击打开链接

vj 网址点击打开链接

这道题我们当时想了很久 就是不知道怎么来做 这一道题  你要说这道题是最短路呢 还是 并查集呢 还是 最小生成树呢  当时的我们队 很纠结 很纠结 最后我们的队友敲了一个 邻接表 加上 最小生成树 也没有ac  最后我看了邻接表 突然恍然大悟 用了邻接表加上 队列就ac了 我看我们其他队的小伙伴使用的dfs  看起来也很厉害 但是感觉耗时可能会多一点把~~~~  话不多说 看代码

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
const int N = 1e5 + 10;
int tot, m, n, head[N], dis[N];
bool vis[N], flag1, flag2;
struct node
{
    int v, dis, net;
} e[N * 10];
void add(int a, int b, int c)
{
    e[tot].v = b;
    e[tot].dis = c;
    e[tot].net = head[a];
    head[a] = tot++;
}
bool prim(int s)
{
    int kkk;
    memset(dis, 0x3f, sizeof(dis));
    memset(vis, false, sizeof(vis));
    vis[s] = 1;
    queue<int>qq;
    qq.push(s);
    while(!qq.empty())
    {
        kkk = qq.front();
        qq.pop();
        for(int j = head[kkk]; j != -1; j = e[j].net)
        {
            int dist = e[j].v;
            if(vis[dist])
              continue;
            qq.push(dist);
            vis[dist] = 1;
        }
    }
    for(int i = 0; i < n; i++)
    {
        if(!vis[i])
            return 0;
    }
    return 1;
}
int main()
{
    int u, v;
    while(~scanf("%d%d", &n, &m))
    {
        flag1 = flag2 = false;
        if(n == 0 && m == 0) break;
        tot = 0;
        memset(head, -1, sizeof(head));
        for(int i = 0; i < m; i++)
        {
            scanf("%d%d", &u, &v);
            add(u - 1, v - 1, 1);
        }
        flag1 = prim(0);
       flag2 = prim(n - 1);
        if(flag1 && flag2) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

HDU1269-迷宫城堡

tarjan  强联通分量模版题,流程大概明白了,算法写的很巧妙,还需要慢慢理解。 #include #include #include #include #include #include #i...
  • hy1405430407
  • hy1405430407
  • 2015-08-31 17:02:35
  • 471

【强连通分量】HDU1269迷宫城堡【模板题】【tarjin/双向dfs】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 Problem Description 为了训练小希的方向感,Gardon建立了...
  • wlxsq
  • wlxsq
  • 2016-05-12 13:56:22
  • 356

HDU1269迷宫城堡【并查集】

迷宫城堡Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis...
  • wyjwyl
  • wyjwyl
  • 2015-10-24 00:01:05
  • 569

【HDU 1269】迷宫城堡

【HDU 1269】迷宫城堡 强联通模板
  • ChallengerRumble
  • ChallengerRumble
  • 2015-06-15 11:21:13
  • 926

杭电ACM1269——迷宫城堡~~并查集

这题,可以用并查集来解决。需要用到两个数组来判断从i到j以及j到i的是否属于同一个并查集。 下面的是AC的代码: #include #include using namespace std; ...
  • qq_25425023
  • qq_25425023
  • 2015-05-16 20:44:30
  • 622

HDU 1269 迷宫城堡(强连通图的判定)

最近《算法导论》快看完图论部分了,很多有关图的算法都彻底搞懂并加以证明了。现在主要是将理解的思想用到题目中来加强下。这个题目主要是判断一下整个图是否是强连通的,很简单,可以用tarjan也可以用kos...
  • IAccepted
  • IAccepted
  • 2015-01-06 12:42:09
  • 3526

杭电oj1269 迷宫城堡

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • u011485376
  • u011485376
  • 2013-07-31 16:05:42
  • 618

hdu 1269 迷宫城堡 Tarjan算法

题目链接 题意:给出n个节点和m条边,判断这张图是不是强连通图。 第一次学习Tarjan算法,以下是Tarjan算法模板。 #include #include #include #includ...
  • zchahaha
  • zchahaha
  • 2016-04-22 19:59:45
  • 478

杭电 hdu 1272 小希的迷宫【并查集】

小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su...
  • mengxiang000000
  • mengxiang000000
  • 2016-01-29 14:31:26
  • 1251

迷宫城堡 - HDU 1269 Tarjan 模板题

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub...
  • u014733623
  • u014733623
  • 2015-02-23 19:04:21
  • 370
收藏助手
不良信息举报
您举报文章:迷宫城堡 HDU - 1269
举报原因:
原因补充:

(最多只允许输入30个字)