#include #include #include using namespace std; const int INF=2*1000*1000*1000+5; // ثابتی بسیار بزرگ که از هر ورودی بزرگ‌تر باشد const int N=1000; // حداکثر تعداد راس‌ها int n,m; //به ترتیب تعداد راسها، تعداد یال‌ها int min_e[N]; // کم‌ترین فاصله‌ی هر راس تا راس‌های انتخاب شده int sel_e[N]; // نزدیک‌ترین راس از بین راس‌های انتخاب شده bool used[N]; // جزء مجموعه شده یا نه vector > ans; // پشته‌ای که جواب را نگه می‌دارد vector > V[N]; // وزن و شماره راس‌هایی که به آن یال دارد bool find_mst(){ fill_n(min_e,n,INF); // مقدار دهی اولیه fill_n(sel_e,n,-1); // مقدار دهی اولیه fill_n(used,n,false); // مقدار دهی اولیه min_e[0]=0; // صفر قرار می‌دهیم تا ابتدا راس صفر(یک) انتخاب شود for (int i=0; i> n>>m; for(int i=0; i>a>>b>>w; // به ترتیب ۲ راس و سپس وزن یال V[a-1].push_back(make_pair(b-1,w)); // است n-1 یکی کم می‌کنیم چون بازه‌ی معتبر ما صفر تا V[b-1].push_back(make_pair(a-1,w)); // است n-1 یکی کم می‌کنیم چون بازه‌ی معتبر ما صفر تا } if(find_mst()==false) cout << "No MST!\n"; }