Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.75 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #define pb push_back
  4. #define mk make_pair
  5. #define pii pair<int,int>
  6. #define S second
  7. #define F first
  8. #include <algorithm>
  9. #include <set>
  10. using namespace std;
  11. //хех, здарова
  12. int n,m,bf[3],lt=-1;vector<pii>a;vector<int> d,p;vector<vector<pii>>nt;//lt - указатель на последний элемент
  13. void swap(pii q, pii k) {
  14.     int tmp=a[q];
  15.     a[q]=a[k];
  16.     a[k]=tmp;
  17. }
  18. pii sudo() { //ну типа get root, ну ты понел
  19.     pii res=a[0];
  20.     a[0]=a[lt];
  21.     bool q,e; int i=0; --lt;
  22.     while (((q=a[i]>a[i*2+1])||(e=a[i]>a[i*2+2]))&&(i<lt)) {
  23.         if (!(lt&1)) {
  24.             if (i>=lt-1) break;
  25.         }
  26.         if (q) {                // слева держим минимум
  27.             swap(i,i*2+1); i=i*2+1;
  28.         }
  29.         else if (e) {
  30.             swap(i,i*2+2); i=i*2+2;
  31.         }
  32.     }
  33.     if (!(lt&1)) {
  34.         if (a[lt-1]>a[lt]) {
  35.                 swap(lt-1,lt);
  36.         }
  37.     }
  38.     return res;
  39. }
  40. int pred(int b) {
  41.     if (b&1) return (b+1)/2-1;
  42.     return b/2-1;
  43. }
  44. void add(pii o) {
  45.     ++lt;
  46.     a[lt]=o;
  47.     int j=lt;
  48.     if (!(lt&1)) {                // слева держим минимум
  49.         if (a[lt-1]>a[lt]) {
  50.                 swap(lt-1,lt);
  51.                 j=lt-1;
  52.         }
  53.     }
  54.     while(a[j]<a[pred(j)]) {
  55.         swap(j,pred(j));
  56.         j=pred(j);
  57.     }
  58. }
  59. int main() {
  60.     // F - расстояние до вершины, S - номер вершины
  61.     scanf("%d%d",&n,&m);a.resize(n+1);d.resize(n,-1);p.resize(n,-322);nt.resize(n);
  62.     for (int i=0;i<m;++i) {
  63.         scanf("%d%d%d", &bf[0],&bf[1],&bf[2]);--bf[1];--bf[0];
  64.         nt[bf[0]].pb(mk(bf[2],bf[1]));nt[bf[1]].pb(mk(bf[2],bf[0]));
  65.     }
  66.    
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement