import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Main { static Scanner scanner = new Scanner(System.in); static int n, k, m, s, t; // static int wenhua[]; static int paichi[][]; static int gra[][]; static LinkedList<Integer>[] wenhua; public static void main(String[] args) { n = scanner.nextInt(); k = scanner.nextInt(); m = scanner.nextInt(); s = scanner.nextInt(); t = scanner.nextInt(); gra = new int[n + 1][n + 1]; wenhua = new LinkedList[k + 1]; for (int i = 1; i <= k; i++) { wenhua[i] = new LinkedList(); } // wenhua = new int[n + 1]; paichi = new int[k + 1][k + 1]; // System.out.println("ddddddddddd"); // 依次代表国家个数(国家编号为1到N),文化种数(文化编号为1到K),道路的条数,以及起点和终点的编号(保证S不等于T); for (int i = 1; i <= n; i++) { int wen = scanner.nextInt(); wenhua[wen].add(i); // System.out.println(wen); } // 如果两个国家排斥的话,设琪距离为非常大就可以了 for (int i = 1; i <= n; i++) { Arrays.fill(gra[i], 1001); } for (int i = 1; i <= k; i++) { for (int j = 1; j <= k; j++) { paichi[i][j] = scanner.nextInt(); // System.out.println(paichi[i][j]); } } for (int i = 0; i < m; i++) { int u, v, w; u = scanner.nextInt(); v = scanner.nextInt(); w = scanner.nextInt(); gra[u][v] = w; gra[v][u] = w; // System.out.println(gra[u][v]); } for (int i = 1; i <= k; i++) { for (int j = 1; j <= k; j++) { // paichi[i][j] = scanner.nextInt(); if (paichi[i][j] == 1) { List<Integer> wenhua1 = wenhua[i]; List<Integer> wenhua2 = wenhua[j]; for (int a = 0; a < wenhua1.size(); a++) { for (int b = 0; b < wenhua2.size(); b++) { gra[wenhua2.get(b)][wenhua1.get(a)] = 1001; } } } } } for (int k = 1; k <= n; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { gra[i][j] = Math.min(gra[i][j], gra[i][k] + gra[k][j]); } } } System.out.println(gra[s][t] == 1001 ? -1 : gra[s][t]); } }
0.0分
1 人评分
多输入输出练习1 (C语言代码)浏览:1177 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1195 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:875 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1242 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1143 |
三角形 (C++代码)递推浏览:755 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:614 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:604 |
1199题解浏览:653 |
C语言程序设计教程(第三版)课后习题6.9 (C++代码)浏览:499 |