1 条题解
-
0
C++ :
#include<cstdio> #include<map> #include<algorithm> using namespace std; #define mp make_pair map<pair<int,int>,int> m; int fir[200010],ne[400010],to[400010], n,num,ans,p; void add(int u,int v) { num++; ne[num*2]=fir[u]; fir[u]=num*2; to[num*2]=v; ne[num*2+1]=fir[v]; fir[v]=num*2+1; to[num*2+1]=u; } void dfs(int u,int fa,int dis) { int v; if (dis>ans) { ans=dis; p=u; } for (int i=fir[u];i;i=ne[i]) if ((v=to[i])!=fa) dfs(v,u,dis+1); } int main() { int x,y,z; scanf("%d",&n); for (int i=1;i<=n-2;i++) { scanf("%d%d%d",&x,&y,&z); if (x>y) swap(x,y); if (x>z) swap(x,z); if (y>z) swap(y,z); if (x+1!=y) { if (m.count(mp(x,y))) add(i,m[mp(x,y)]); else m[mp(x,y)]=i; } if (y+1!=z) { if (m.count(mp(y,z))) add(i,m[mp(y,z)]); else m[mp(y,z)]=i; } if (x!=1||z!=n) { if (m.count(mp(x,z))) add(i,m[mp(x,z)]); else m[mp(x,z)]=i; } } ans=-1; dfs(1,-1,0); ans=-1; dfs(p,-1,0); printf("%d\n",ans+1); }
- 1
信息
- ID
- 3731
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者