src/graph/ds/info/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../graph_c/lib.hpp" | ||
| 4 | |||
| 5 | namespace tifa_libs { | ||
| 6 | struct arc_cnt_tag : graph_info_impl_::graph_info_tag_base { | ||
| 7 | 138 | CEXPE arc_cnt_tag(u32) NE {} | |
| 8 | |||
| 9 | 186 | ND CEXP u32 esize() CNE { return ecnt; } | |
| 10 | |||
| 11 | protected: | ||
| 12 | u32 ecnt{0}; | ||
| 13 | 23510755 | CEXP void add_arc(u32, u32, auto...) NE { ++ecnt; } | |
| 14 | CEXP void del_arc(u32, u32, auto...) NE { --ecnt; } | ||
| 15 | }; | ||
| 16 | template <class T> | ||
| 17 | struct vweight_tag : graph_info_impl_::graph_info_tag_base { | ||
| 18 | vec<T> vw; | ||
| 19 | CEXPE vweight_tag(u32 n) NE : vw(n) {} | ||
| 20 | |||
| 21 | protected: | ||
| 22 | CEXP void add_arc(u32, u32, auto...) NE {} | ||
| 23 | CEXP void del_arc(u32, u32, auto...) NE {} | ||
| 24 | }; | ||
| 25 | struct degin_tag : graph_info_impl_::graph_info_tag_base { | ||
| 26 | vecu din; | ||
| 27 | 804 | CEXPE degin_tag(u32 n) NE : din(n) {} | |
| 28 | |||
| 29 | protected: | ||
| 30 | 74472229 | CEXP void add_arc(u32, u32 v, auto...) NE { ++din[v]; } | |
| 31 | CEXP void del_arc(u32, u32 v, auto...) NE { --din[v]; } | ||
| 32 | }; | ||
| 33 | struct degout_tag : graph_info_impl_::graph_info_tag_base { | ||
| 34 | vecu dout; | ||
| 35 | 804 | CEXPE degout_tag(u32 n) NE : dout(n) {} | |
| 36 | |||
| 37 | ND CEXP u32 deg_out(u32 u) CNE { return dout[u]; } | ||
| 38 | |||
| 39 | protected: | ||
| 40 | 74472229 | CEXP void add_arc(u32 u, u32, auto...) NE { ++dout[u]; } | |
| 41 | CEXP void del_arc(u32 u, u32, auto...) NE { --dout[u]; } | ||
| 42 | }; | ||
| 43 | } // namespace tifa_libs | ||
| 44 |