标签:style blog http color os io java ar for
5 4 ....# ...#. ..... ..... ..... 2 3 1 4 1 2 3 5 2 3 3 1 5 4 2 1
7
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <climits> 7 #include <vector> 8 #include <queue> 9 #include <cstdlib> 10 #include <string> 11 #include <set> 12 #include <stack> 13 #define LL long long 14 #define pii pair<int,int> 15 #define INF 0x3f3f3f3f 16 using namespace std; 17 const int maxn = 20; 18 struct Tunnels { 19 int u,v,x,y; 20 }; 21 Tunnels e[maxn]; 22 int n,m,g[maxn][maxn],dp[1<<15][maxn]; 23 char mp[maxn][maxn]; 24 int bfs(Tunnels &a,const Tunnels &b) { 25 queue< pii >q; 26 static int vis[maxn][maxn]; 27 static const int dir[4][2] = {0,-1,-1,0,1,0,0,1}; 28 memset(vis,-1,sizeof(vis)); 29 q.push(make_pair(a.x,a.y)); 30 vis[a.x][a.y] = 0; 31 while(!q.empty()) { 32 pii now = q.front(); 33 q.pop(); 34 if(now.first == b.u && now.second == b.v) 35 return vis[now.first][now.second]; 36 for(int i = 0; i < 4; i++) { 37 int x = now.first+dir[i][0]; 38 int y = now.second+dir[i][1]; 39 if(vis[x][y] > -1 || mp[x][y] == ‘#‘) continue; 40 vis[x][y] = vis[now.first][now.second]+1; 41 q.push(make_pair(x,y)); 42 } 43 } 44 return -1; 45 } 46 int main() { 47 while(~scanf("%d %d",&n,&m)) { 48 memset(mp,‘#‘,sizeof(mp)); 49 for(int i = 1; i <= n; i++) 50 scanf("%s",mp[i]+1); 51 for(int i = 1; i <= m; i++) 52 scanf("%d %d %d %d",&e[i].u,&e[i].v,&e[i].x,&e[i].y); 53 for(int i = 1; i <= m; i++) { 54 for(int j = 1; j <= m; j++) 55 g[i][j] = bfs(e[i],e[j]); 56 } 57 memset(dp,INF,sizeof(dp)); 58 for(int i = 1; i <= m; i++) dp[1<<(i-1)][i] = 0; 59 int ans = INF; 60 for(int i = 1,M = 1 << m; i < M; i++) { 61 for(int j = 1; j <= m; j++) { 62 if(i&(1<<(j-1))) { 63 for(int k = 1; k <= m; k++) { 64 if(k == j || (i&(1<<(k-1)) == 0) || g[k][j] == -1) continue; 65 dp[i][j] = min(dp[i][j],dp[i^(1<<(j-1))][k]+g[k][j]); 66 } 67 } 68 if(i == M-1) ans = min(ans,dp[i][j]); 69 } 70 } 71 printf("%d\n",ans == INF?-1:ans); 72 } 73 return 0; 74 }
标签:style blog http color os io java ar for
原文地址:http://www.cnblogs.com/crackpotisback/p/3952457.html