Skip to content

Instantly share code, notes, and snippets.

@yurahuna
yurahuna / FordFulkerson.cpp
Last active July 25, 2018 06:37
FordFulkerson
// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_6_A
#include <vector>
#include <iostream>
#include <algorithm>
class FordFulkerson {
struct edge { int from, to, cap, rev; };
static const int INF = 1 << 30;
@yurahuna
yurahuna / segtree.cpp
Last active April 11, 2018 14:56
抽象化半開区間セグツリー
template<class T, class E>
struct SegTree{
typedef function<T(T,T)> F;
typedef function<T(T,E)> G;
typedef function<E(E,E)> H;
typedef function<E(E,int)> P;
int n;
F f;
G g;
H h;
#include <bits/stdc++.h>
using namespace std;
using Key = int;
using Value = int;
struct Treap {
Key key;
Value val;
int pri; // priority(小さい方が上)
#include "bits/stdc++.h"
using namespace std;
#define rep(i,n) for (int i=0;i<(n);i++)
#define rep2(i,a,b) for (int i=(a);i<(b);i++)
#define rrep(i,n) for (int i=(n)-1;i>=0;i--)
#define rrep2(i,a,b) for (int i=(a)-1;i>=b;i--)
#define chmin(a,b) (a)=min((a),(b));
#define chmax(a,b) (a)=max((a),(b));
#define all(a) (a).begin(),(a).end()
import heapq
def dijkstra(G, s):
n = len(G)
INF = float("inf")
d = [INF] * n
d[s] = 0
pq = []
heapq.heappush(pq, (0, s)) # (cost, vertex)
while pq:
@yurahuna
yurahuna / pycpx_max_flow.py
Created April 5, 2017 03:52
PyCPXで最大流問題を解く
# -*- coding: utf-8 -*-
import numpy as np
from pycpx import CPlexModel
# 入力(有向グラフ,頂点は0-index)
# n m
# s_1 t_1 c_1
# s_2 t_2 c_2
# ...
@yurahuna
yurahuna / pycpx_shortest_distance.py
Created April 5, 2017 03:19
PyCPXで最短路問題を解く
# -*- coding: utf-8 -*-
import numpy as np
from pycpx import CPlexModel
# 入力(有向グラフ,頂点は0-index)
# n m
# s_1 t_1 c_1
# s_2 t_2 c_2
# ...
#include <bits/stdc++.h>
using namespace std;
#define int long long // <-----!!!!!!!!!!!!!!!!!!!
#define rep(i,n) for (int i=0;i<(n);i++)
#define rep2(i,a,b) for (int i=(a);i<(b);i++)
#define rrep(i,n) for (int i=(n)-1;i>=0;i--)
#define rrep2(i,a,b) for (int i=(a)-1;i>=b;i--)
#define chmin(a,b) (a)=min((a),(b));
#define chmax(a,b) (a)=max((a),(b));
@yurahuna
yurahuna / dijkstra_tuple.cpp
Created March 26, 2017 03:55
RUPCday3Dより. tupleやpairをこんな感じで使ってますという例
using Vertex = tuple<int, int, int>; // {i, j, k}
using State = pair<int, Vertex>;
priority_queue<State, vector<State>, greater<State>> pq; // cost, vertex
vvvi d(n, vvi(c + 1, vi(2, inf)));
d[0][v0][0] = 0;
pq.push(State(0, make_tuple(0, v0, 0)));
while (!pq.empty()) {
int cost;
Vertex vertex;
#include <bits/stdc++.h>
using namespace std;
#define int long long // <-----!!!!!!!!!!!!!!!!!!!
#define rep(i,n) for (int i=0;i<(n);i++)
#define rep2(i,a,b) for (int i=(a);i<(b);i++)
#define rrep(i,n) for (int i=(n)-1;i>=0;i--)
#define rrep2(i,a,b) for (int i=(a)-1;i>=b;i--)
#define chmin(a,b) (a)=min((a),(b));
#define chmax(a,b) (a)=max((a),(b));