【PTA數據結構 | C語言版】哥尼斯堡的“七橋問題”

本專欄持續輸出數據結構題目集,歡迎訂閱。

文章目錄

    • 題目
    • 代碼

題目

哥尼斯堡是位于普累格河上的一座城市,它包含兩個島嶼及連接它們的七座橋,如下圖所示。

在這里插入圖片描述

可否走過這樣的七座橋,而且每橋只走過一次?瑞士數學家歐拉(Leonhard Euler,1707—1783)最終解決了這個問題,并由此創立了拓撲學。

這個問題如今可以描述為判斷歐拉回路是否存在的問題。歐拉回路是指不令筆離開紙面,可畫過圖中每條邊僅一次,且可以回到起點的一條回路。現給定一個無向圖,問是否存在歐拉回路?

輸入格式:
輸入第一行給出兩個正整數,分別是節點數 n (1≤n≤1000)和邊數 m;隨后的 m 行對應 m 條邊,每行給出一對正整數,分別是該條邊直接連通的兩個節點的編號(節點從1到 n 編號)。

輸出格式:
若歐拉回路存在則輸出 1,否則輸出 0。

輸入樣例1:
6 10
1 2
2 3
3 1
4 5
5 6
6 4
1 4
1 6
3 4
3 6

輸出樣例1:
1

輸入樣例2:
5 8
1 2
1 3
2 3
2 4
2 5
5 3
5 4
3 4

輸出樣例2:
0

代碼

#include <stdio.h>
#include <stdlib.h>#define MAX_N 1000// 鄰接表節點結構
typedef struct Node {int vertex;struct Node* next;
} Node;// 并查集結構
typedef struct {int parent[MAX_N + 1];int rank[MAX_N + 1];
} UnionFind;// 初始化并查集
void initUnionFind(UnionFind* uf, int n) {for (int i = 1; i <= n; i++) {uf->parent[i] = i;uf->rank[i] = 1;}
}// 查找根節點并路徑壓縮
int find(UnionFind* uf, int x) {if (uf->parent[x] != x) {uf->parent[x] = find(uf, uf->parent[x]);}return uf->parent[x];
}// 合并兩個集合
void unionSets(UnionFind* uf, int x, int y) {int xRoot = find(uf, x);int yRoot = find(uf, y);if (xRoot == yRoot) return;if (uf->rank[xRoot] < uf->rank[yRoot]) {uf->parent[xRoot] = yRoot;} else if (uf->rank[xRoot] > uf->rank[yRoot]) {uf->parent[yRoot] = xRoot;} else {uf->parent[yRoot] = xRoot;uf->rank[xRoot]++;}
}int main() {int n, m;scanf("%d %d", &n, &m);// 記錄每個頂點的度數int degree[MAX_N + 1] = {0};// 初始化并查集UnionFind uf;initUnionFind(&uf, n);// 處理每條邊for (int i = 0; i < m; i++) {int u, v;scanf("%d %d", &u, &v);// 更新度數degree[u]++;degree[v]++;// 合并兩個頂點所在的集合unionSets(&uf, u, v);}// 檢查所有邊是否在同一個連通分量中int root = -1;int hasEdge = 0;for (int i = 1; i <= n; i++) {if (degree[i] > 0) {hasEdge = 1;if (root == -1) {root = find(&uf, i);} else if (find(&uf, i) != root) {// 存在多個連通分量printf("0\n");return 0;}}}// 如果沒有邊,特殊處理if (!hasEdge) {printf("0\n");return 0;}// 檢查所有頂點的度數是否為偶數for (int i = 1; i <= n; i++) {if (degree[i] % 2 != 0) {printf("0\n");return 0;}}// 所有條件滿足,存在歐拉回路printf("1\n");return 0;
}    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89900.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89900.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89900.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 詳解:從入門到進階

文章目錄前言一、什么是 Redis&#xff1f;二、Redis 使用場景1. 緩存熱點數據2. 消息隊列3. 分布式鎖4. 限流與防刷5. 計數器、排行榜三、緩存三大問題&#xff1a;雪崩 / 穿透 / 擊穿1. ?? 緩存雪崩&#xff08;Cache Avalanche&#xff09;2. &#x1f50d; 緩存穿透&…

QCustomPlot 使用教程

下載網址&#xff1a;官方網站&#xff1a;http://www.qcustomplot.com/我的環境是 window10 qt5.9.9 下載后&#xff0c;官網提供了很多例子。可以作為參考直接運行自己如何使用&#xff1a;第一步&#xff1a;使用QCustomPlot非常簡單&#xff0c;只需要把qcustomplot.cpp和…

基于springboot+mysql的作業管理系統(源碼+論文)

一、開發環境 1 Spring Boot框架簡介 描述&#xff1a; 簡化開發&#xff1a;Spring Boot旨在簡化新Spring應用的初始搭建和開發過程。配置方式&#xff1a;采用特定的配置方式&#xff0c;減少樣板化配置&#xff0c;使開發人員無需定義繁瑣的配置。開發工具&#xff1a;可…

LVS 集群技術基礎

LVS(linux virual server)LVS集群技術---NAT模式一.準備四臺虛擬機1.client(eth0ip:172.254.100)2.lvs(eth0ip:172.254.200;eth1ip:192.168.0.200)3.rs1(eht0ip:192.168.0.10)4.rs2(eth0ip:192.168.0.20)二&#xff1a;在rs1和rs2安裝httpd功能dnf/yum install htppd -y三&…

Oracle RU19.28補丁發布,一鍵升級穩

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中國DBA聯盟(ACDU)成員&#xff0c;15年DBA工作經驗 Oracle、PostgreSQL ACE CSDN博客專家及B站知名UP主&#xff0c;全網粉絲15萬 擅長主流Oracle、MySQL、PG、高斯及…

lvs 集群技術

LVS概念LVS&#xff1a;Linux Virtual Server&#xff0c;負載調度器&#xff0c;是一種基于Linux操作系統內核的高性能、高可用網絡服務負載均衡解決方案。LVS工作原理基于網絡層&#xff08;四層&#xff0c;傳輸層&#xff09;的負載均衡技術&#xff0c;它通過內核級別的IP…

AR巡檢和傳統巡檢的區別

隨著工業4.0時代的到來&#xff0c;數字化轉型逐漸成為各行各業提升效率、保障安全和降低成本的關鍵。而在這一轉型過程中&#xff0c;巡檢工作作為確保設備穩定運行的重要環節&#xff0c;逐步從傳統方式走向智能化、數字化。尤其是增強現實&#xff08;AR&#xff09;技術的引…

Axure設計設備外殼 - AxureMost 落葵網

在UI設計中&#xff0c;設備外殼&#xff08;硬件外殼與界面中的“虛擬外殼”&#xff09;和背景是構成視覺體驗的核心元素&#xff0c;它們不僅影響美觀&#xff0c;更直接關聯用戶對功能的理解和操作效率。以下從設計角度詳細解析其作用與使用邏輯&#xff1a; 一、設備外殼&…

基于深度學習的電信號分類識別與混淆矩陣分析

基于深度學習的電信號分類識別與混淆矩陣分析 1. 引言 1.1 研究背景與意義 電信號分類識別是信號處理領域的重要研究方向,在醫療診斷、工業檢測、通信系統等多個領域有著廣泛的應用。傳統的電信號分類方法主要依賴于手工提取特征和淺層機器學習模型,但這些方法往往難以捕捉…

Git 和Gitee遠程連接 上傳和克隆

第一步創建遠程庫第二步初始化本地庫創建鏈接刪掉.idea 和target(這兩個沒用運行就自動生成了)右鍵空白處選擇Git Bash Here 初始化本地庫git init建立遠程連接建立連接這里是我的地址&#xff0c;后面拼接你的地址git remote add origin https://gitee.com/liu-qing_liang/git…

零基礎100天CNN實戰計劃:用Python從入門到圖像識別高手

一、為什么你需要這份100天CNN學習計劃&#xff1f; 在人工智能領域&#xff0c;卷積神經網絡&#xff08;CNN&#xff09; 是計算機視覺的基石技術。無論是人臉識別、醫學影像分析還是自動駕駛&#xff0c;CNN都扮演著核心角色。但對于初學者來說&#xff0c;面對復雜的數學公…

Python Matplotlib中的fontdict參數說明

文章目錄 1 fontdict 參數的常用屬性 1.1 使用示例 1.2 其他注意事項 1.3 結合其他參數 各位老板好, 在 Python 的 Matplotlib 庫中,fontdict 參數用于定義文本屬性的字典。這些屬性包括字體大小、顏色、樣式等,主要用于控制標題、標簽和其他文本元素的顯示效果。通過將 font…

25數據庫三級備考自整理筆記

備考策略&#xff1a;博主是邊做題邊學習知識點的&#xff0c;從每個章節->每套真題的流程&#xff0c;知識點清晰詳細&#xff0c;喜歡的請點個關注和收藏&#xff0c;祝大家考試順利&#xff0c;必過必過必過&#xff01;一、數據庫應用系統開發方法1.數據庫的三級模式&am…

文娛投資的逆勢突破:博派資本的文化旅游綜合體戰略

在多數資本因“變現難、政策風險、退出緩慢”等問題紛紛撤離文娛賽道時&#xff0c;博派資本創始人鄭蘭卻選擇逆勢而上&#xff0c;聚焦線下文化消費&#xff0c;并推出了全新的文化旅游綜合體戰略。鄭蘭深刻認為&#xff0c;2025年將成為區域經濟和文化產業復蘇的關鍵節點。她…

「日拱一碼」033 機器學習——嚴格劃分

目錄 簡單隨機劃分&#xff08;train_test_split&#xff09; 分組劃分&#xff08;Group Splitting&#xff09; 簡單分組劃分 (Group Splitting) 分層分組劃分 (Stratified Group Splitting) 交叉驗證法&#xff08;Cross-Validation&#xff09; 分組K 折交叉驗證&…

ASP.NET Core Web API 中集成 DeveloperSharp.RabbitMQ

文章目錄前言一、核心特性與設計理念極簡API設計二、使用步驟1.配置 RabbitMQ 連接&#xff08;配置文件設置&#xff09;2.發送消息&#xff08;在 Controller 中&#xff09;3.消費消息&#xff08;后臺服務&#xff09;4.注冊托管服務三、消息生命周期控制四、高級用法延時隊…

解決Flutter運行android提示Deprecated imperative apply of Flutter‘s Gradle plugins

文章目錄 出現場景 解決方案 編輯android/settings.gradle 編輯android/build.gradle 重新定義庫變量 編輯android/app/build.gradle 刪除fluttetRoot和plugin字段 添加plugins塊 修改dependencies 出現場景 ado@adodeMacBook-Air app_demo % flutter run --profile Launching…

音視頻重回顧及nat內網穿透相關再整理筆記

以前系統得粗略對音視頻有過技術棧基類&#xff0c;現在重新回顧。 除此之外&#xff0c;最近剛好實現一個雙網卡加入內網的測試方案&#xff0c;涉及內網穿透的知識&#xff0c;剛好對內網穿透邏輯進行整理。 1&#xff1a;明確相關基礎知識&#xff0c;解惑體系架構。2&#…

深入理解 SemaphoreSlim 在.NET Core API 開發中的應用

目錄 什么是 SemaphoreSlim SemaphoreSlim 的核心方法 構造函數 等待方法 釋放方法 基本使用模式 同步使用模式 異步使用模式&#xff08;推薦在 API 中使用&#xff09; 在 Web 開發中的常見用途 1. 限制 API 接口的并發請求數 2. 保護共享資源的并發訪問 3. 控制…

板凳-------Mysql cookbook學習 (十二--------4)

11.0 概述 386 11.1 使用LOAD DATA和mysqlimport導入數據 390 首先創建 mytbl_3 表&#xff08;結構與 mytbl 相同&#xff09;&#xff1a;sql CREATE TABLE mytbl_3 LIKE mytbl;用文本編輯器&#xff08;如 Notepad&#xff09;打開 mytbl.txt&#xff0c;確保格式轉換成wind…