P2196 挖地雷

Posted for-miku

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2196 挖地雷相关的知识,希望对你有一定的参考价值。

---------------------------

我跟你们说,这就是道假的黄题,普及难度还差不多,太水了

---------------------------

提议没啥好说的,搜索就是了

---------------------------

题目链接:Miku

--------------------------

技术图片
 1 /*
 2 这是道假的黄题 
 3 
 4 */
 5 
 6 
 7 
 8 
 9 #include<iostream>
10 #include<algorithm>
11 #include<cstring> 
12 #include<queue>
13 #include<cstdio>
14 
15 using namespace std;
16 int now[21];//当前顺序 
17 int ans[21];//答案顺序 
18 int cnt;//答案 
19 int vis[21];//回溯记录 
20 int tu[21][21];//联通 
21 int v[21];//价值 
22 int n;
23 int x;
24 void dfs(int p,int k,int cntt)
25     if(vis[p])
26     return ;
27     vis[p]=1;
28     now[k]=p;
29     for(int i=1;i<=n;++i)
30     
31         if(i!=p&&tu[p][i]&&!vis[i])//不会重复挖=联通+挖没挖过 
32         
33             dfs(i,k+1,cntt+v[i]);//递归 
34             vis[i]=0;
35         
36     
37     if(cntt>cnt)
38     
39         cnt=cntt;//记录 
40         for(int i=1;i<=n;++i)
41         
42             ans[i]=now[i];//更新路径 
43         
44     
45     now[k]=0;//这个也要额外处理 
46 
47 
48 int main()
49     cin>>n;
50     for(int i=1;i<=n;++i)
51         
52             cin>>v[i];
53         
54     for(int i=1;i<=n;++i)
55     
56         for(int j=i+1;j<=n;++j)
57         cin>>x;
58         if(x)
59         tu[i][j]=1;
60         
61     
62     for(int i=1;i<=n;++i)
63     
64         dfs(i,1,v[i]);
65         vis[i]=0;
66     
67     for(int i=1;i<=n;++i)
68     
69         if(!ans[i])
70         break;
71         else
72         cout<<ans[i]<<" ";
73     
74     cout<<endl<<cnt;
75     return 0;
76 
AC

----------------------------

Have a good day.

以上是关于P2196 挖地雷的主要内容,如果未能解决你的问题,请参考以下文章

洛谷—— P2196 挖地雷

洛谷——P2196 挖地雷

P2196 挖地雷

Luogu P2196 挖地雷

P2196 [NOIP1996 提高组] 挖地雷DP和图论的简单结合

挖地雷问题