U E D R , A S I H C RSS

새싹교실/2017/따라와반/과제방/자료구조/7회차 (rev. 1.2)

새싹교실/2017/따라와반/과제방/자료구조/7회차


2. 신원준

2.1. 최단경로

(코드를 여기에)

2.2. 선수과목

(코드를 여기에)

2.3. 수 정렬하기 2

(코드를 여기에)

2.4. 수 정렬하기 3

(코드를 여기에)

3. 이민욱

3.1. 최단경로

#include <stdio.h>
#include <vector>
#include <queue>

using namespace std;

int V, E, K;

int dist[20001];

queue<int> q;
vector<pair<int, int>> edge[20001]; //index : from, first : to, second: cost

int main(){
    scanf("%d %d", &V, &E);
    scanf("%d", &K);
    for(int i=1;i<=V;i++){
        dist[i] = -1;
        q.push(i);
    }
    dist[K] = 0;
    for(int i=0;i<E;i++) {
        int u, v, w;
        scanf("%d %d %d", &u, &v, &w);
        edge[u].push_back(make_pair(v, w));
        if(u == K){
            dist[v]= w;
        }
    }
    while(!q.empty()){
        int i = q.front();
        q.pop();
        int length = edge[i].size();
        for (int j = 0; j < length; j++) {
            if (dist[i] != -1) {
                if(dist[edge[i][j].first]==-1){
                    dist[edge[i][j].first] = dist[i]+edge[i][j].second;
                    q.push(edge[i][j].first);
                }
                if (dist[i] + edge[i][j].second < dist[edge[i][j].first]) {
                    dist[edge[i][j].first] = dist[i] + edge[i][j].second;
                    q.push(edge[i][j].first);
                }
            }
        }
    }

    for(int i=1;i<=V;i++){
        if(dist[i]==-1){
            printf("INF\n");
        }
        else{
            printf("%d\n", dist[i]);
        }
    }
    return 0;
}

3.2. 선수과목

(코드를 여기에)

3.3. 수 정렬하기 2

(코드를 여기에)

3.4. 수 정렬하기 3

(코드를 여기에)

4. 정석우

4.1. 최단경로

(코드를 여기에)

4.2. 선수과목

(코드를 여기에)

4.3. 수 정렬하기 2

(코드를 여기에)

4.4. 수 정렬하기 3

(코드를 여기에)
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:30:08
Processing time 0.0301 sec