e d i f b g h
j a
Kemudian dari vertex B,F,H ,I dan J terpilih BG yang Pertama Selanjutnya Lalu Maka, dari jumlah memilih vertex dari pematang A,Edan B,C,E B,C, vertex edge F,H A B,C, dan sembarang minimum dan F B,C,D,E dan terdapat D,F F E tepilih J terdapat terpilih dan yang dan CD edge F dilubangi terpilih disini yang edge CH AB,EJ,ED,FJ,FG yang merupakan dipilih AF,AB,EJ,ED DI EJ agar merupakan karena edge air terkuras AE habis adalah : B,E dan F terdapat edge merupakan edge dengan minimum dan ED edge 1+2+3+4+5+7+8+9+10=4 dengan terpilih dengan bobot AF AB bobot yang minimum minimum merupakan 9bobot dari yaitu EJ edge edge yaitu 5yang dengan dengan bobot bobot bobot 6 akan BC,BG,EJ,ED,FJ,FG dan terpilih BC merupakan edge minimum membentuk sirkuit jika yaitu ditambahkan dengan bobot minimum 4
Masalah largest increasingmonotonically subsequence adalah untuk mencari subsequence dari suatu urutan dimana elemen subsequence dalam urutan terurut, terkecil hingga tertinggi, dan dimana urutan tersebut dibuat sepanjang mungkin. Instruksi / Algoritmanya :
1. Inputkan jumlah elemen dalam urutan (integer)
2.
3. 4.
5.
6. 7.
/*Algoritma :
1. Buat treenya
2. Cari panjang maksimum LMISnya (dfs) 3. Cari setiap subsequence yang sesuai dengan panjang maksimum*/ #include<cstdio> #include<vector> #include<map> #include<cstring> using namespace std;
int main()
{
vi in; int N,x; scanf("%d",&N); // masukkan banyak angka in.push_back(-1); // root
tree.push_back(vi());
for(int i=0;i<N;++i) { scanf("%d",&x); in.push_back(x); tree.push_back(vi()); } for(int i=0;i<N+1;++i) { m[in[i]] = i; for(int j=i+1;j<N+1;++j) if (in[i] < in[j]) tree[i].push_back(in[j]); } memset(visited,0,sizeof visited); dfs(-1,0); // cari panjang maksimum LMIS & gambar tree per level printf("Panjang LMIS = %d\n",maxx); memset(visited,0,sizeof visited); track(-1,0); // cari subsequence yang LMIS return 0; }
printf("%d\n",v);
if (d > maxx) maxx = d; for(vi::iterator it=tree[m[v]].begin();it!=tree[m[v]].end();++it) { if (!visited[m[*it]]) { dfs(*it,d+1); visited[m[*it]] = 0; } } }
if (v != -1) lmis.push_back(v);
if (d==maxx) { for(int i=0;i<maxx;++i) printf("%d ",lmis[i]); printf("\n"); } for(vi::iteratorit=tree[m[v]].begin();it!=tree[m[v]].end();++it) { if (!visited[m[*it]]) { track(*it,d+1); visited[m[*it]] = 0; lmis.pop_back(); } } }
Ini termasuk contoh tree karena tidak terdapat siklus (aliran listrik satu arah menuju akhir rumah dan tidak timbal balik) dan semua rumah/Vertex sudah teraliri listrik.