zoukankan      html  css  js  c++  java
  • 判定图的两点是否有路

    问题描述

    给定一个有向图G,以及两个顶点s和t,判定s和t是否存在一条有向路径(s->t)

    输入描述

    输入文件,包含多组数据,每个测试数据的第一行为两个整数n和m,分别表示图G的顶点数和变数,

    接下来有m行,每行为两个整数u,v,描述一条有向边<u,v>,

    最后有一行为两个整数,s,t,其中s≠t,且n<=50,且此图为简单图,其基图为连同的。

    输入文件的最后一行为0,0,表示输入结束

    输出描述

    若存在一条s到t的路,则输出yes,否则输出no

    样例输入

    7 9

    1 2

    2 3

    2 5

    2 6

    3 5

    4 3

    5 2

    5 4

    6 7

    3 6

    0 0

    样例输出

    yes

     

    这道题是校赛的一道题,自己早早的做了出来,但是一直提交不过,赛后才发现,自己在处理每组数据之前,忘记清零变量!!

    希望自己不要再犯这种错误。

    #include <stdio.h>
    #include <iostream>
    #include <stdlib.h>
    #include <stack>
    using namespace std;
    int maze[70][70];
    int visit[70];
    int n, m;
    int xx, yy;
    int flag = 0;
    void dfs() {
        stack<int>my_stack;
        my_stack.push(xx);
        while (!my_stack.empty()) {
            int t = my_stack.top();
            if (t == yy) {
                flag = 1;
                return;
            }
            my_stack.pop();
            for (int i = 1; i <= n; i++) {
                if (maze[t][i] == 1 && visit[i] == 0) {
                    visit[i] = 1;
                    my_stack.push(i);
                }
            }
        }
    }
    int main() {
    
        while (cin >> n >> m) {
            if (n == 0 && m == 0)
                break;
            flag = 0;
    
            for (int i = 1; i <= n; i++) {
                visit[i] = 0;
                for (int j = 1; j <= n; j++) {
                    maze[i][j] = 0;
                }
            }
            int i = 1;
            while (i <= m) {
                int x, y;
                cin >> x >> y;
                maze[x][y] = 1;
                i++;
            }
            cin >> xx >> yy;
            visit[xx] = 1;
            dfs();
            if (flag == 1)
                printf("yes
    ");
            else
                printf("no
    ");
        }
    }
  • 相关阅读:
    easyExcel入门
    UML-从需求到设计--迭代进化
    UML-操作契约总结
    102. Binary Tree Level Order Traversal
    98. Validate Binary Search Tree
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    84. Largest Rectangle in Histogram
    92. Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/woxiaosade/p/10057205.html
Copyright © 2011-2022 走看看