P3366 模板 最小生成樹

2022-09-18 03:45:35 字數 3504 閱讀 3836

如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出 orz。

第一行包含兩個整數 n,m,表示該圖共有 n 個結點和 m 條無向邊。

接下來 m行每行包含三個整數 x_i,y_i,z_i,表示有一條長度為 z_i的無向邊連線結點 x_i,y_i

如果該圖連通,則輸出乙個整數表示最小生成樹的各邊的長度之和。如果該圖不連通則輸出 orz。

輸入4 5

1 2 2

1 3 2

1 4 3

2 3 4

3 4 3

輸出對於 100% 的資料:\(1\le n\le 5000 ,1\le m\le 2\times 10^5\)

#include namespace fastio 

void print() {}

inline int getc()

inline void flush()

templateinline void read(t &x, t2 &... oth)

while (isdigit(ch))

x = f ? -x : x;

read(oth...);

}templateinline void print(t x, t2... oth) while (x /= 10);

do while (--p);

buf2[++p3] = hh;

print(oth...);

}} // namespace fastio

#define read fastio::read

#define print fastio::print

//***********************************===

using namespace std;

const int maxn=5e3+10;

const int inf=0x3f3f3f3f;

typedef long long ll;

int n,m,e[maxn][maxn],ans,vis[maxn],d[maxn];

int main()

memset(d, 0x3f, sizeof(d));

for (int i = 1; i <= n; i++)

vis[1]=1;

for (int i = 1; i <= n; i++)

}if (miv == -1) break;

vis[miv] = 1;

ans += mi;

//print(mi);

for (int j = 1; j <= n; j++) }}

print(ans);

//***********************************===

fastio::flush();

return 0;

}

#include namespace fastio 

void print() {}

inline int getc()

inline void flush()

templateinline void read(t &x, t2 &... oth)

while (isdigit(ch))

x = f ? -x : x;

read(oth...);

}templateinline void print(t x, t2... oth) while (x /= 10);

do while (--p);

buf2[++p3] = hh;

print(oth...);

}} // namespace fastio

#define read fastio::read

#define print fastio::print

//***********************************===

using namespace std;

const int maxn=4e5+10;

const int inf=0x3f3f3f3f;

typedef long long ll;

int n,m,ans,vis[maxn],head[maxn];

priority_queue,vector>,greater> >q;

struct nodee[maxn];

int t;

void add(int u,int v,int w)

int main()

int cnt=0;

q.push(make_pair(0, 1));

while (!q.empty())

}print(ans);

//***********************************===

fastio::flush();

return 0;

}

#include namespace fastio 

void print() {}

inline int getc()

inline void flush()

templateinline void read(t &x, t2 &... oth)

while (isdigit(ch))

x = f ? -x : x;

read(oth...);

}templateinline void print(t x, t2... oth) while (x /= 10);

do while (--p);

buf2[++p3] = hh;

print(oth...);

}} // namespace fastio

#define read fastio::read

#define print fastio::print

//***********************************===

using namespace std;

const int maxn=2e5+10;

const int inf=0x3f3f3f3f;

typedef long long ll;

int n,m,ans,f[maxn];

struct nodee[maxn];

int find(int x)

bool cmp(const node &a,const node &b)

int main()

for (int i = 1; i <= n; i++)

sort(e + 1, e + m + 1, cmp);

for (int i = 1; i <= m; i++)

print(ans);

//***********************************===

fastio::flush();

return 0;

}

P3366 模板 最小生成樹

如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出包含乙個數,即最小生成樹...

P3366 模板 最小生成樹

如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出包含乙個數,即最小生成樹...

P3366 模板 最小生成樹

題目描述 如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入輸出格式 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出...