洛谷P1475 控制公司 Controlling Companies
Posted third2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷P1475 控制公司 Controlling Companies相关的知识,希望对你有一定的参考价值。
洛谷P1475 控制公司 Controlling Companies
一种类似dijstra的算法
1 #include <bits/stdc++.h> 2 #define LL long long 3 #define For(i,j,k) for(int i=j;i<=k;i++) 4 #define Dow(i,j,k) for(int i=j;i>=k;i--) 5 using namespace std ; 6 7 const int N = 111 ; 8 int m,n,id ; 9 int mp[N][N],dist[N] ; 10 bool visit[N] ; 11 12 inline int read() 13 { 14 int x = 0 , f = 1 ; 15 char ch = getchar() ; 16 while(ch<‘0‘||ch>‘9‘) { if(ch==‘-‘) f = -1 ; ch = getchar() ; } 17 while(ch>=‘0‘&&ch<=‘9‘) { x = x * 10+ch-48 ; ch = getchar() ; } 18 return x * f ; 19 } 20 21 inline void write(int x) 22 { 23 if( x < 0 ) putchar(‘-‘) ; 24 if( x > 9 ) write(x/10) ; 25 putchar(x%10+48) ; 26 } 27 28 inline void writeln(int x) 29 { 30 write(x) ; 31 putchar(‘\n‘) ; 32 } 33 34 int main() 35 { 36 m = read() ; 37 For(i,1,m) { 38 int x,y ; 39 x = read() ; y = read() ; n = max(n,x) ; n = max(n,y) ; 40 mp[x][y] = read() ; 41 } 42 43 For(node,1,n) { 44 For(i,1,n) dist[i] = mp[node][i] ; 45 For(i,1,n) visit[i] = 0 ; 46 visit[node] = 1 ; 47 while(1) { 48 For(i,1,n) { 49 id = i ; 50 if(!visit[id] && dist[id]>50) break ; // 没被控制且能被控制 51 } 52 if(!(!visit[id] && dist[id]>50)) { 53 For(i,1,n) 54 if(i!=node&&visit[i]) printf("%d %d\n",node,i) ; 55 break ; 56 } 57 visit[id] = 1 ; 58 For(j,1,n) dist[j]+=mp[id][j] ; 59 } 60 } 61 return 0 ; 62 }
以上是关于洛谷P1475 控制公司 Controlling Companies的主要内容,如果未能解决你的问题,请参考以下文章
[USACO]控制公司 Controlling Companies