int main() { int i, j, t, s, q; for (scanf("%d", &t); t-- > 0 && scanf("%d", &n) == 1;) { for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &a[i][j]); m = (n + 1) / 2; for (i = 0; i < m && scanf("%d", &s) == 1; i++) { while (s-- > 0 && scanf("%d", &q) == 1) { if (q == 1) apply1(i); if (q == 2) apply2(i); if (q == 3) apply3(i); if (q == 4) apply4(i); } } for (i = 0; i < n; i++) for (j = 0; j < n; j++) printf(((j + 1) < n) ? "%d " : "%d\n", a[i][j]); } return 0; }
static void apply(ElementType const & element_in, MeshTypeOut & segment_out, EdgeRefinementFlagAccessor const edge_refinement_flag_accessor, VertexToVertexHandleAccessor const vertex_to_vertex_handle_accessor, EdgeToVertexHandleAccessor edge_to_vertex_handle_accessor) { typedef typename viennagrid::result_of::const_element_range<ElementType, viennagrid::line_tag>::type EdgeOnCellRange; typedef typename viennagrid::result_of::iterator<EdgeOnCellRange>::type EdgeOnCellIterator; std::size_t edges_to_refine = 0; EdgeOnCellRange edges_on_cell(element_in); for (EdgeOnCellIterator eocit = edges_on_cell.begin(); eocit != edges_on_cell.end(); ++eocit) { if ( edge_refinement_flag_accessor(*eocit) ) ++edges_to_refine; } switch (edges_to_refine) { case 0: apply0(element_in, segment_out, edge_refinement_flag_accessor, vertex_to_vertex_handle_accessor, edge_to_vertex_handle_accessor); break; case 1: apply1(element_in, segment_out, edge_refinement_flag_accessor, vertex_to_vertex_handle_accessor, edge_to_vertex_handle_accessor); break; case 2: apply2(element_in, segment_out, edge_refinement_flag_accessor, vertex_to_vertex_handle_accessor, edge_to_vertex_handle_accessor); break; case 3: apply3(element_in, segment_out, edge_refinement_flag_accessor, vertex_to_vertex_handle_accessor, edge_to_vertex_handle_accessor); break; default: //nothing to do... break; } } //apply()