[[TableOfContents]] = 오늘의 문제 = * [https://www.acmicpc.net/problem/1238|파티] = 참가자 = * 박인서 = 코드 = == 15이원준 == == 박인서 == {{{ #include #define MAX_INT 217483647 using namespace std; int edge[1001][1001], dist[2][1001]; bool visit[2][1001]; int main() { int n, m, s, i, j; //입력 및 초기화 cin >> n >> m >> s; for (i = 0; i> a >> b >> c; edge[a][b] = c; } for (i = 0; i <= n; i++) { visit[0][i] = false, visit[1][i] = false; dist[0][i] = MAX_INT, dist[1][i] = MAX_INT; } //첫번째도 두번째도 시작점에서 dist = 0 dist[0][s] = 0, dist[1][s] = 0; for (i = 0; idist[0][j]) min1 = j; if (visit[1][j] == false && dist[1][min2]>dist[1][j]) min2 = j; } //visit check visit[0][min1] = true; visit[1][min2] = true; //경로 탐색 for (j = 1; j <= n; j++) { //기존 dijkstra와 동일 if (dist[0][j]>dist[0][min1] + edge[min1][j] && edge[min1][j] != 0) dist[0][j] = dist[0][min1] + edge[min1][j]; //반대로 edge를 먼저 생각하고 dist를 생각한다. if (dist[1][j]>edge[j][min2] + dist[1][min2] && edge[j][min2] != 0) dist[1][j] = edge[j][min2] + dist[1][min2]; } } //최댓값 탐색 int res = 0; for (i = 1; i <= n; i++) { if (res