Submission #1286858
Source Code Expand
#include <iostream> #include <fstream> #include <vector> #include <algorithm> using namespace std; void print2d(vector<string> M){ cout << endl; for(string s: M){ cout << s << endl; } } // 隣接リストで使う辺を表す型 struct Edge { int to, cost; // 辺の接続先頂点, 辺の重み Edge(int to, int cost) : to(to), cost(cost) {} // コンストラクタ }; typedef vector<vector<Edge> > AdjList; // 隣接リストの型 AdjList graph; // グラフの辺を格納した構造体 // graph[v][i]は頂点vから出るi番目の辺Edge const long INF = numeric_limits<long>::max(); vector<long> dist; // 戻り値がtrueなら負の閉路を含む bool bellman_ford(int n, int s) { // nは頂点数、sは開始頂点 for (int i = 0; i < n; i++) { for (int v = 0; v < n; v++) { for (int k = 0; k < graph[v].size(); k++) { Edge e = graph[v][k]; if (dist[v] != INF && dist[e.to] > dist[v] + e.cost) { dist[e.to] = dist[v] + e.cost; if (i == n - 1) return true; // n回目にも更新があるなら負の閉路が存在 } } } } return false; } int main(int argc, const char * argv[]) { int n, m; cin >> n >> m; dist = vector<long>(n, INF); dist[0] = 0; // 開始点の距離は0 graph = AdjList(n); for (int i = 0; i < m; i++) { int from, to, cost; cin >> from >> to >> cost; from -= 1; to -= 1; cost *= -1; graph[from].push_back(Edge(to, cost)); } bool result = bellman_ford(n, 0); if(result == true){ long old = dist[n-1]; bellman_ford(n, 0); if(old == dist[n-1]){ cout << -dist[n-1] << endl; }else{ cout << "inf" << endl; } }else{ cout << -dist[n-1] << endl; } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Score Attack |
User | peroon |
Language | C++14 (GCC 5.4.1) |
Score | 400 |
Code Size | 2057 Byte |
Status | AC |
Exec Time | 11 ms |
Memory | 256 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_2.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 1 ms | 256 KB |
sample_02.txt | AC | 1 ms | 256 KB |
sample_03.txt | AC | 1 ms | 256 KB |
subtask_1_1.txt | AC | 2 ms | 256 KB |
subtask_1_10.txt | AC | 1 ms | 256 KB |
subtask_1_11.txt | AC | 2 ms | 256 KB |
subtask_1_12.txt | AC | 6 ms | 256 KB |
subtask_1_13.txt | AC | 3 ms | 256 KB |
subtask_1_14.txt | AC | 7 ms | 256 KB |
subtask_1_15.txt | AC | 11 ms | 256 KB |
subtask_1_16.txt | AC | 1 ms | 256 KB |
subtask_1_17.txt | AC | 1 ms | 256 KB |
subtask_1_18.txt | AC | 4 ms | 256 KB |
subtask_1_19.txt | AC | 6 ms | 256 KB |
subtask_1_2.txt | AC | 4 ms | 256 KB |
subtask_1_20.txt | AC | 3 ms | 256 KB |
subtask_1_21.txt | AC | 4 ms | 256 KB |
subtask_1_22.txt | AC | 7 ms | 256 KB |
subtask_1_23.txt | AC | 1 ms | 256 KB |
subtask_1_24.txt | AC | 4 ms | 256 KB |
subtask_1_25.txt | AC | 3 ms | 256 KB |
subtask_1_26.txt | AC | 5 ms | 256 KB |
subtask_1_27.txt | AC | 7 ms | 256 KB |
subtask_1_3.txt | AC | 3 ms | 256 KB |
subtask_1_4.txt | AC | 4 ms | 256 KB |
subtask_1_5.txt | AC | 3 ms | 256 KB |
subtask_1_6.txt | AC | 7 ms | 256 KB |
subtask_1_7.txt | AC | 3 ms | 256 KB |
subtask_1_8.txt | AC | 4 ms | 256 KB |
subtask_1_9.txt | AC | 1 ms | 256 KB |