본문 바로가기

728x90
반응형

Algorithm/C++

(111)
[C++] 2056 : 작업 https://www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net #include #include #include using namespace std; int N, run_time[10001], state[10001], result[10001]; //(작업 개수),(정점 사이에 걸리는 시간),(진입 차수),(시작점 부터 시작하여 총 걸리는 시간=>여기서 가장 큰 결과값은 문제의 정답) vector v[10001]; //(인접 노드 나타내기) void t..
[C++] 11779 : 최소비용 구하기 2 https://www.acmicpc.net/problem/11779 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net #include #include #include using namespace std; const int INF = 1e9; int n, m; vector node[1003]; vector ans_num; int d[1003], visit[1003]; int main(void) { int a, b, c; cin >> n >> m; for (int i = 0; i > ..
[C++] 1506 : 경찰서 https://www.acmicpc.net/problem/1506 1506번: 경찰서 종욱이가 살고있는 나라에는 도시가 N개 있고, 도시의 일부는 일방 통행 도로로 연결되어 있다. 종욱이가 살고있는 나라의 대통령 욱종이는 범죄와 싸우기 위해서 일부 도시에 경찰서를 세우려 www.acmicpc.net #include using namespace std; int N; //도시 개수 int city[101][101]; //도시 관계(인접행렬) int cost[101], visited[101]; //(도시 건설 비용),(독립적인 묶음인지 확인->비용을 체크하기 위함인데, 각 묶음에서 가장 적은 비용을 더해준다) int main(void) { int ans = 0; //출력할 답(최소비용) string input..
[C++] 10159 : 저울 https://www.acmicpc.net/problem/10159 10159번: 저울 첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ M ≤ 2,000이다. 다음 M개의 줄에 미리 측정된 비교 결과가 한 줄에 하나씩 www.acmicpc.net #include using namespace std; int d[101][101]; //인접행렬 int main(void) { int N, M; //(물건 개수),(물건들 사이 관계) int a, b; //(무거운 물건),(가벼운 물건) cin >> N >> M; //입력 for (int i = 0; i > a >> b; d[a][b]=1; //방향성 그래프로 관계가 있다..
[C++] Floyd Warshall #include using namespace std; const int INF = 1e9; //INF 일경우는 정점이 연결이 안된 경우 const int number = 5; //정점 개수 int a[5][5] = { //정점들의 인접행렬 {0,1,INF,1,5}, {9,0,3,2,INF}, {INF,INF,0,4,INF}, {INF,INF,2,0,3}, {3,INF,INF,INF,0} }; void floyd() { //floyd 알고리즘 int d[number][number]; //새로운 인접행렬 for (int i = 0; i
[C++] 10282 : 해킹 https://www.acmicpc.net/problem/10282 10282번: 해킹 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염되면 www.acmicpc.net #include #include #include using namespace std; const int INF = 1e9; //INF 값 설정(연결 안됐을 경우) int T, n, d, c, cnt; //(Test case),(컴퓨터 개수),(의존성 개수),(해킹당한 컴퓨터 번호.즉 시작 번호) vector computer[10001]; //인접한 정점을 나타내기 위한 백터. first에 시간(비용)..
[C++] 1753 : 최단경로 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net #include #include #include using namespace std; #define INF 987654321 int V, E, start; //(정점 개수),(간선 개수),(시작 정점) vector node[20001]; //정점, 간선, 비용 정보를 담을 벡터 int d[200001]; //출력할 최단 경로값 void dijkstra() { ..
[C++] 15552 : 빠른 A+B https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net #include using namespace std; int main(void) { int T, A, B; ios::sync_with_stdio(false); //C++과 C 표준 스트림 동기화 해제 cin.tie(NULL); //입출력 연결 끊어주기 cin >> T; for (int i = 0; i > A >> B; cout

728x90
반응형