HDU1869 六度分離(Dijkstra演算法)
本題為Dijkstra演算法的簡單變形,根據模板便可寫出本題的AC程式碼,希望大家可以領悟到模板的重要性
下面是本渣渣的AC程式碼。
#include<cstdio>
#include<cstring>
#include<iostream>
#define inf 0x3fffffff
#define N 205
using namespace std;
int e[N][N],n,m,book[N],dis[N];
int Dijkstra(int s)
{
int i,j,u,min;
memset(book,0,sizeof(book));
for (i=0;i<n;i++)
{
dis[i]=inf;
}
dis[s]=0;
for(i=1;i<=n;i++)
{
u=-1;
min=inf;
for(j=0;j<n;j++)
{
if(min>dis[j]&&book[j]==0)
{
u=j;
min=dis[j];
}
}
if (u==-1||dis[u]>7)break;
book[u]=1;
for(j=0;j<n;j++)
{
if(book[j]==0&&dis[j]>dis[u]+e[u][j])
{
dis[j]=dis[u]+e[u][j];
}
}
}
if(i<=n)
{
return 0;
}
else return 1;
}
int main()
{
while (scanf("%d%d",&n,&m)!=-1)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
e[i][j]=inf;
}
}
int x,y;
for(int i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
if(x!=y)
{
e[x][y]=e[y][x]=1;
}
}
int flag=0;
for(int i=0;i<n;i++)
{
if(Dijkstra(i)==0)
break;
flag++;
}
if(flag<n)
cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
return 0;
}
相關推薦
HDU1869 六度分離(Dijkstra演算法)
本題為Dijkstra演算法的簡單變形,根據模板便可寫出本題的AC程式碼,希望大家可以領悟到模板的重要性 下面是本渣渣的AC程式碼。 #include<cstdio> #includ
六度分離(弗洛伊德演算法)
六度分離Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 29 Accepted Submission(s) : 10
六度分離(最短路徑之Floyd演算法)
六度分離點我找原題Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 31 Accepted Submission(s) : 14Font: Times
六度分離 (無向圖最短路徑問題)
1967年,美國著名的社會學家斯坦利·米爾格蘭姆提出了一個名為“小世界現象(small world phenomenon)”的著名假說,大意是說,任何2個素不相識的人中間最多隻隔著6個人,即只用6個人就可以將他們聯絡在一起,因此他的理論也被稱為“六度分離”理論(six degrees of sepa
六度分離(floyd)
六度分離 1967年,美國著名的社會學家斯坦利·米爾格蘭姆提出了一個名為“小世界現象(small world phenomenon)”的著名假說,大意是說,任何2個素不相識的人中間最多隻隔著6個人,即只用6個人就可以將他們聯絡在一起,因此他的理論也被稱為“六度分離”理論(six degr
PAT——A1030 Travel Plan(dijkstra演算法)
題目連結: #include<iostream> #include<set> #include<string> #include<cmath> #include<cstring> #include<algorithm> #i
HDU——3790 最短路徑問題(dijkstra演算法)
題目連結: #include<stdio.h> #include<string.h> #include<stdlib.h> #define maxn 1010 #define inf 0x3fffffff using namespace std; int co
PAT 習題bitset 06-圖3 六度空間 (30 分)
包括 沒有 stream con 長度 text 翻轉 大量 集合 1 #include<iostream> 2 #include<string> 3 #include<bitset> 4 5 6 using names
7-9 旅遊規劃 (25 分)(Dijkstra演算法)
題意: 思路:單源最短路問題,Dijkstra演算法搞定就可以了,因為要找出最便宜的最短路,所以需要在更新最短距離的時候加一個條件(即當最短距離相等的時候,如果該路徑的花費更小,就更新最小花費)就可以了。之前自己學的最短路的水平也就僅限於模板題的水平,現在可以在條件
7-11 社交網路圖中結點的“重要性”計算 (30 分)(Dijkstra演算法)
題意: 思路:對每個輸入的點跑一遍dijkstra演算法,然後對這個點到所有點的距離求和按公式輸出就可以了。 (這次嘗試了用陣列模擬連結串列來做最短路問題,重新整理了自己對最短路的理解) 這裡構造連結串列的過程我的理解一直有誤差,第一行的式子中參與程式碼構建的
最短路徑問題(dijkstra演算法)
11 0 11 27 11 12 29 26 42 22 36 34 11 0 18 3 4 19 16 32 13 28 25 27 18 0 18 16 9 6 17 15 11 13 11 3 18 0 3 19 16 32 15 27 25 12 4
7-7 六度空間 (30 分)
“六度空間”理論又稱作“六度分隔(Six Degrees of Separation)”理論。這個理論可以通俗地闡述為:“你和任何一個陌生人之間所間隔的人不會超過六個,也就是說,最多通過五個人你就能夠認識任何一個陌生人。”如圖1所示。 圖1 六度空間示意圖 “
離散複習資料之一(Dijkstra演算法)
Dijkstra演算法。 Dijkstra演算法,也可以叫做標記法。它的原理是把所求目標點到達該點的最短路徑標記起來,並且把每一個到達他的最短路徑的點標記起來。就像(5,4),就是表示到達它的最短的距離是5.它是通過4到達的,類似於遞迴的思想。 先來看一個最短路問題
圖結構練習——最短路徑(Dijkstra演算法)
think: 1注意重複邊的覆蓋 2注意map陣列的初始化 3注意dist陣列的初始化 圖結構練習——最短路徑 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 給定一個
貪心演算法之用優先佇列解決最短路徑問題(Dijkstra演算法)
#include <iostream> #include <cstdio> #include <stack> #include <cstring> #include <queue> #include <cstdlib> using na
7-7 六度空間 (30 分)(bfs)(c++簡短高效解決)
“六度空間”理論又稱作“六度分隔(Six Degrees of Separation)”理論。這個理論可以通俗地闡述為:“你和任何一個陌生人之間所間隔的人不會超過六個,也就是說,最多通過五個人你就能夠認識任何一個陌生人。”如圖1所示。 圖1 六度空間示意圖 “六度空間”理論雖然得到廣泛的認
hdu 1874暢通工程續(dijkstra演算法)
暢通工程續 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su
貪心演算法之最短路徑問題(Dijkstra演算法)
1、問題 一個求單源最短路徑的問題。給定有向帶權圖 G =(V, E ), 其中每條邊的權是非負實數。此外,給定 V 中的一個頂點, 稱為源點。現在要計算從源到所有其他各頂點的最短路徑長 度,這裡路徑長度指路上各邊的權之和。 2、分析 3、程式碼實現 1、普通C
【ACM】帶權有向圖單源最短路徑(Dijkstra演算法)
最短路徑的第一類問題 求從單個源點到其餘各頂點的最短路徑。這是一種貪心策略,不可以存在負權邊。 演算法簡介 給定帶權有向圖G和源點v0,求從源點v0到G中其餘各頂點的最短路徑。迪傑斯特拉演算法是對
06-圖3 六度空間(30 分)
題目來源:中國大學MOOC-陳越、何欽銘-資料結構-2018春 作者: 陳越 單位: 浙江大學 問題描述: “六度空間”理論又稱作“六度分隔(Six Degrees of Separat