日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【慢慢学算法】:连通图

發布時間:2023/12/19 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 【慢慢学算法】:连通图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述:

給定一個無向圖和其中的所有邊,判斷這個圖是否所有頂點都是連通的。

輸入:

每組數據的第一行是兩個整數 n 和 m(0<=n<=1000)。n 表示圖的頂點數目,m 表示圖中邊的數目。如果 n 為 0 表示輸入結束。隨后有 m 行數據,每行有兩個值 x 和 y(0<x, y <=n),表示頂點 x 和 y 相連,頂點的編號從 1 開始計算。輸入不保證這些邊是否重復。

輸出:

對于每組輸入數據,如果所有頂點都是連通的,輸出"YES",否則輸出"NO"。

樣例輸入:

4 3
1 2
2 3
3 2
3 2
1 2
2 3
0 0

樣例輸出:

NO
YES
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

int a[1001][1001];
int visit[1001];
int n, m;

void DFS(int i)
{
    int j;
    visit[i] = 1;
    for(int j = 2; j <= n; j++)
    {
	if( a[i][j] == 1 && visit[j] == 0)
	    DFS(j);
    }
}

int main()
{
    freopen("a.in","r", stdin);
    while( cin >> n >> m)
    {
	int A, B;
	bool flag;
	if( n == 0 && m == 0)
	    break;
	memset(visit, 0, sizeof(visit));
	memset(a, 0, sizeof(a));
	for( int i = 0; i < m; i++)
	{
	    cin >> A >> B;
	    a[A][B] = 1;
	    a[B][A] = 1;
	}
	DFS(1);
	flag = true;
	for(int i = 1; i <= n; i++)
	    if(visit[i] == 0)
		flag = false;
	if(flag)
	    cout << "YES" << endl;
	else
	    cout << "NO" << endl;

    }
    return 0;
}

  

給夢想一點時間

總結

以上是生活随笔為你收集整理的【慢慢学算法】:连通图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。