Replay:


 

Dup4:

  • 时间复杂度算不对? 一点点思路不经过验证就激动的要死? 浪费自己一个小时还浪费别人一个小时?
  • 对1e3不敏感? 1e3 * 1e3是多少? 模拟建边跑dp不写非要写个大模拟?
  • 看到数据结构就高兴的要死? 没细想? 没发现性质? 

 X:

  • 日常语文差, 导致计算几何死都写不对  读题要细致啊!
  • 感觉状态还可以?只是计算几何写太久了, 人都懵了

 

 

 

 

A:Cactus Draw

Solved.

按照BFS序以及深度排

 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 const int maxn = 1e4 + 10;
 6 
 7 struct Edge{
 8     int to, nxt;
 9     Edge(){}
10     Edge(int to, int nxt) :to(to), nxt(nxt){}
11 }edge[maxn << 1];
12 
13 struct node{
14     int x, y;
15     node(){}
16     node(int x, int y):x(x), y(y){}
17 }ans[maxn];
18 
19 int n, m;
20 int head[maxn], tot;
21 int vis[maxn];
22 int level[maxn];
23 
24 void Init()
25 {
26     tot = 0;
27     memset(vis, 0, sizeof vis);
28     memset(level, 0, sizeof level);
29     memset(head, -1, sizeof head);
30 }
31 
32 void addedge(int u,int v)
33 {
34     edge[tot] = Edge(v, head[u]); head[u] = tot++;
35     edge[tot] = Edge(u, head[v]); head[v] = tot++;
36 }
37 
38 void BFS(int root)
39 {
40     queue<int>q;
41     q.push(root);
42     vis[root] = 1;
43     ans[root] = node(vis[root], ++level[vis[root]]);
44     while(!q.empty())
45     {
46         int u = q.front();
47         q.pop();
48         for(int i = head[u]; ~i; i = edge[i].nxt)
49         {
50             int v = edge[i].to;
51             if(!vis[v])
52             {
53                 vis[v] = vis[u] + 1;
54                 ans[v] = node(vis[v], ++level[vis[v]]);
55                 q.push(v);
56             }
57         }
58     }
59 }
60 
61 int main()
62 {
63     while(~scanf("%d %d", &n, &m))
64     {
65         Init();
66         for(int i = 1, u, v; i <= m; ++i)
67         {
68             scanf("%d %d", &u, &v);
69             addedge(u, v);
70         }
71         BFS(1);
72         for(int i= 1 ; i <= n; ++i)
73         {
74             printf("%d %d\n", ans[i].x, ans[i].y);
75         }
76     }
77     return 0;
78 }
View Code

相关文章: