Share Code Quickly

What is Harigami?

Harigami is a simple source code sharing service. You can share source code by an URL which is issued after submission.
You can also run your source code online such as Python, Ruby, JavaScript and so on.
For free.Use for code review.
Preferences
anonymous No title
C++

template< typename T >
struct edge {
	int from, to;
	T cost;

	edge(int to, T cost) : from(-1), to(to), cost(cost) {}

	edge(int from, int to, T cost) : from(from), to(to), cost(cost) {}

	edge &operator=(const int &x) {
		to = x;
		return *this;
	}

	operator int() const { return to; }
};

template< typename T >
using Edges = vector< edge< T > >;

template< typename T >
vector< T > bellman_ford(Edges< T > &edges, int V, int s) {
	const auto INF = numeric_limits< T >::max();
	vector< T > dist(V, INF);
	dist[s] = 0;
	for (int i = 0; i < V - 1; i++) {
		for (auto &e : edges) {
			if (dist[e.from] == INF) continue;
			dist[e.to] = min(dist[e.to], dist[e.from] + e.cost);
		}
	}

	return dist;
}

//到達できるできない関係なしに、負の閉路があればtrueを返す
template< typename T >
bool find_negative_loopA(Edges< T > &edges, vector<T> &d, int V) {

	//距離の重みを0にしておくことで、始点から順番にたどるという行動をスキップして
	//単に構造として負の閉路をもっているかを調べられる
	vector< T > dist(V, 0);

	for (int i = 0; i < V; i++) {
		for (auto &e : edges) {
			if (d[e.to] > d[e.from] + e.cost) {
				d[e.to] = d[e.from] + e.cost;
				//負の閉路がなければV-1で終わる
				//負の閉路があるとV回目でも更新が起こる
				if (i == V - 1)return true;
			}
		}
	}

	return false;
}

//到達できる閉路があるかどうか
//稼いだあとにゴールできるかは問わない

//始点→終点→負の閉路→×終点のパターンはこの関数では検出できない
template< typename T >
bool find_negative_loopB(Edges< T > &edges, vector<T> &d, int V, int s) {

	for (int i = 0; i < V; i++) {
		for (auto &e : edges) {
			if (d[e.from] != INF && d[e.to] > d[e.from] + e.cost) {
				d[e.to] = d[e.from] + e.cost;
				//負の閉路がなければV-1で終わる
				//負の閉路があるとV回目でも更新が起こる
				if (i == V - 1)return true;
			}
		}
	}

	return false;
}


//始点から負の閉路に到達できて、かつ
//終点が負の閉路に含まれているパターン
//稼いだあとにゴールできる
template< typename T >
bool find_negative_loopC(Edges< T > &edges, vector<T> &d, int V, int s, int t) {


	//まず、V-1回の更新のあとに更新が起きてると負の閉路がある。
	//この閉路に終点が含まれていると無限に稼げてしまう
	//一つの大きな輪になってるとさらにV回かかる(これが最悪パターン)
	
	//V-1以降に更新が起こった時に、辺の行き先toが終点だったら
	//負の閉路に終点が含まれることになる。
	for (int i = 0; i < 2 * V; i++) {
		for (auto &e : edges) {
			if (d[e.from] != INF && d[e.to] > d[e.from] + e.cost) {
				d[e.to] = d[e.from] + e.cost;
				//負の閉路がなければV-1で終わる
				//負の閉路があるとV回目でも更新が起こる
				if (i >= V - 1 && e.to == t)return true;
			}
		}
	}

	return false;
}

//if (find_negative_loopB(es, dist, V, R)) {
//	cout << "NEGATIVE CYCLE" << endl;
//}
//else {
//	for (int i = 0; i < V; i++) {
//
//		if (dist[i] != INF) {
//			cout << dist[i] << endl;
//		}
//		else {
//			cout << "INF" << endl;
//		}
//
//	}
//}


//負の閉路がないとわかっているパターン
//vector< T > bellman_ford(Edges< T > &edges, int V, int s) 

//A 到達できるできない関係なしに、負の閉路があればtrueを返す
//負の閉路のチェックのみ(距離は無効)
//bool find_negative_loopA(Edges< T > &edges, vector<T> &dist, int V)

//B
//到達できる閉路があるかどうか
//稼いだあとにゴールできるかは問わない
//始点→終点→負の閉路→×終点のパターンはこの関数では検出できない
//template< typename T >
//bool find_negative_loopB(Edges< T > &edges, vector<T> &dist, int V, int s)

//C
//始点から負の閉路に到達できて、かつ
//終点が負の閉路に含まれているパターン
//稼いだあとにゴールできる

//bool find_negative_loopC(Edges< T > &edges, vector<T> &dist, int V, int s, int t)


int main() {

	int V, E, R;
	cin >> V >> E >> R;
	Edges<int> es;

	vector<int> x(E);
	vector<int> y(E);
	vector<int> z(E);

	for (int i = 0; i < E; i++) {
		cin >> x[i] >> y[i] >> z[i];
		x[i]--; y[i]--;
		es.emplace_back(x[i], y[i], z[i]);
		es.emplace_back(y[i], x[i], z[i]);
	}

	vector<int> dist;

	//たどり着けない最大値を指定する(10^9で間に合わなかったら書き換える)
	dist.resize(V, INF);

	dist[R] = 0;

	//上のコメントに関数があるので適宜選んで使う
	if (find_negative_loopC(es, dist, V, s, t)) {
		cout << "NEGATIVE CYCLE" << endl;
	}
	else {
		for (int i = 0; i < V; i++) {

		if (dist[i] != INF) {
			cout << dist[i] << endl;
		}
		else {
			cout << "INF" << endl;
		}

	}
	}



	return 0;

}
anonymous No title
JavaScript
console.log("Hello World");
anonymous ベルマンフォード2
Python
def BellmanFord(num_vertex, edges, source):
    inf = float('inf')

    # ある頂点までの距離(コスト)を記録するリスト
    costs = [inf for i in range(num_vertex)]
    costs[source-1] = 0

    for i in range(num_vertex):
        for edge in edges:

            # その辺の始点の頂点
            start = costs[edge[0]-1]
            # その辺の終点の頂点
            goal = costs[edge[1]-1]
            # コスト、距離、重み
            cost = edge[2]

            # 辺の緩和(よりコストの小さい経路を見つけたらリストを更新する)
            if edge[0] != inf and start + cost < goal:
                costs[edge[1]-1] = start + cost

                # 負閉路の検出
                if i == num_vertex-1:
                    return -1

    return costs
anonymous ベルマンフォード
Python
INF = float('inf')


def Bellmanford(node, edges, source):
    d = [INF] * node  # ある頂点までのコストを保存するリスト
    d[source] = 0

    for i in range(node):
        for start, goal, cost in edges:
            # 辺の始まりの頂点までのコストが INF でなく
            # 辺の向かう先の頂点のコストが、より軽くなる場合に、
            # リストを更新する
            if d[start] != INF and d[start] + cost < d[goal]:
                d[goal] = d[start] + cost
                if i == node-1 and goal == node-1:
                    return 'inf'
    return -d[node-1]


N, M = map(int, input().split())
abc = [map(int, input().split()) for _ in range(M)]
Edges = [None] * M

for i in range(M):
    ai, bi, ci = abc[i]
    Edges[i] = (ai-1, bi-1, -ci)


ans = Bellmanford(N, Edges, 0)
print(ans)

anonymous No title
HTML
<div><a href="https://line.me/ti/p/uVKk2Tsspk" target="_blank" title=""><img alt="ジャパカジLINEはじめました!詳細ページへ" class="full hidden-xs" src="/images/home/images/line/japacasi-line-ad-header-pc_751x96.jpg" style="" /><img alt="ジャパカジLINEはじめました!詳細ページへ" class="full visible-xs" src="/images/home/images/line/japacasi-line-ad-header-mobile_351x89.jpg" style="" /></a></div>
anonymous No title
PHP
<?php echo 'sss'?>
anonymous No title
Python
//@version=3
study('コゲクラウド', overlay=true)
EMAorSMA = input(title="平均線の選択", defval="SMA", options=["SMA", "EMA"])
FAST= input(title="FASTMA", type=integer, defval=20, minval=1, maxval=10000)
SLOW = input(title="SLOWMA", type=integer, defval=80, minval=1, maxval=10000)
FASTMA = EMAorSMA == "EMA" ? ema(close, FAST) : sma(close, FAST)
SLOWMA = EMAorSMA == "EMA" ? ema(close, SLOW) : sma(close, SLOW)
ec = FASTMA > SLOWMA ? lime:red
plot(FASTMA, color=ec, linewidth=2)
plot(SLOWMA, color=ec, linewidth=2)
fill(plot(FASTMA), plot(SLOWMA), color = ec)
anonymous No title
Python
//@version=3
study('コゲクラウド', overlay=true)
EMAorSMA = input(title="EMA or SMA?", defval="SMA", options=["SMA", "EMA"])
FAST= input(title="MA Period Fast 1", type=integer, defval=20, minval=1, maxval=10000)
SLOW = input(title="MA Period Fast 2", type=integer, defval=80, minval=1, maxval=10000)
FASTMA = EMAorSMA == "EMA" ? ema(close, FAST) : sma(close, FAST)
SLOWMA = EMAorSMA == "EMA" ? ema(close, SLOW) : sma(close, SLOW)
ec = FASTMA > SLOWMA ? lime:red
plot(FASTMA, color=ec, linewidth=2)
plot(SLOWMA, color=ec, linewidth=2)
fill(plot(FASTMA), plot(SLOWMA), color = ec)
anonymous No title
Python
//@version=3
study(title = "BB GMMA")

source = hlc3
length = input(20, minval=1), mult = input(2.0, minval=0.001, maxval=50)
len = input(3, minval=1, title="FASTMA")
len2 = input(15, minval=1, title="FASTMA2")
len3 = input(30, minval=1, title="SLOWMA")
len4 = input(60, minval=1, title="SLOWMA2")
hiline = input(0.8, "HL")
lowline = input(0.2, "LL")
//RSI
rsi1 = rsi(source, length)

// BB of RSI
basis = sma(rsi1, length)
dev = mult * stdev(rsi1, length)
upper = basis + dev
lower = basis - dev
br = (rsi1 - lower)/(upper - lower)

//MA OF RSI
er = wma(br,len)
er2 = wma(br,len2)
er3 = wma(br,len3)
er4 = wma(br,len4)
//COLOR
plot(br, color=na)
plot(er, title="FMA", style=line, linewidth=1, color=lime,transp=10)
plot(er2, title="FMA2", style=line, linewidth=1, color=lime,transp=10)
plot(er3, title="SMA", style=line, linewidth=1, color=red,transp=10)
plot(er4, title="SMA2", style=line, linewidth=1, color=red,transp=10)
fill(plot(er), plot(er2), color = lime)
fill(plot(er3), plot(er4), color = red)
plot(hiline, title="HL",color=gray,style =circles,linewidth = 1)
plot(lowline, title="LL",color=gray,style =circles,linewidth = 1)
anonymous No title
Python
//@version=3

study(title = "BBRSI", shorttitle = "BSI")

source = hlc3
length = input(20, minval=1), multi = input(2.0, minval=0.001,title="シグマ", maxval=50)
len = input(20, minval=1, title="移動平均線")

//RSI
rsi1 = rsi(source, length)

// BB of RSI
basis = sma(rsi1, length)
dev = multi * stdev(rsi1, length)
upper = basis + dev
lower = basis - dev
br = (rsi1 - lower)/(upper - lower)

//MA OF RSI
er = sma(br,len)

//COLOR
plot(br, color=aqua)
hb = hline(1, color=silver, linestyle=dashed)
lb = hline(0, color=silver, linestyle=dashed)
fill(hb, lb, color=green,transp=95)
plot(er, title="MA", style=circles, linewidth=1, color=orange)


年末年始は機械学習・深層学習を勉強しませんか?
広告
未経験から最短でエンジニアへの転職を目指すなら