SGU 101 Domino[오로라 경로]
6482 단어 php
http://acm.sgu.ru/problem.php?contest=0&problem=101
제목:
N 개의 도미 노 골패,각 골패 의 좌우 양쪽 에 각각 0~6 의 정수(골패 가 회전 하여 좌우 두 수 를 바 꿀 수 있다)가 있 는데 이 골패 들 을 왼쪽 에서 오른쪽으로 배열 하 는 방안 을 구 해서 모든 인접 한 두 숫자 를 똑 같이 한다(즉,왼쪽 골패 오른쪽의 숫자 는 오른쪽 골패 왼쪽 의 숫자 와 같다).
분석:
숫자 를 점 으로 삼 고 골 패 를 가장자리 로 삼다.무방 향 도 를 구성 하고 오 라 의 길 을 구하 면 된다.오로라 경 로 를 구 하 는 데 도움 이 되 지 않 습 니 다.오로라 경로 깊이 설명:http://blog.chinaunix.net/uid-26380419-id-3164913.html
코드:
#include
#include
#include
#include
#include
using namespace std;
const int maxn = 200 + 5, maxm = 6 + 5;
struct Edge{
int to;int dir; int id;int next;};
int tot = 0;
Edge edge[maxn];
stack s;
int pa[maxn], head[maxm], cnt[maxm];
bool vis[maxn];
int _find(int a)
{
if(a == pa[a]) return a;
return pa[a] = _find(pa[a]);
}
void unite(int a, int b)
{
int ra = _find(a);
int rb = _find(b);
if(ra == rb) return ;
pa[rb] = ra;
}
bool same(int a, int b)
{
return _find(a) == _find(b);
}
void add_edge(int u, int v, int id)
{
edge[tot].to = v;
edge[tot].id = id;
edge[tot].dir = 1;
edge[tot].next = head[u];
head[u] = tot++;
edge[tot].to = u;
edge[tot].dir = 0;
edge[tot].id = id;
edge[tot].next = head[v];
head[v] = tot++;
}
void dfs(int u)
{
for(int i = head[u]; i != -1; i = edge[i].next){
if(!vis[i]){
vis[i] = true;
vis[i^1] = true;
dfs(edge[i].to);
s.push(edge[i]);
}
}
}
int main (void)
{
int n ;cin>>n;
memset(head, -1, sizeof(head));
for(int i = 0; i <= 6; i++) pa[i] = i;
int a, b;
for(int i = 0; i < n; i++){
cin>>a>>b;
add_edge(a, b, i + 1);
cnt[a]++;
cnt[b]++;
unite(a, b);
}
int be = -1;
int ans = 0;
for(int i = 0; i <= 6; i++){
if(cnt[i] & 1){
ans++;
if(be == -1) be = i;
}
}
if(ans != 0 && ans != 2) return cout<<"No solution"<0;
for(int i = 0; i <= 6; i++){
if(cnt[i] && be == -1) be = i;
if(cnt[i] && !same(i, be)){
return cout<<"No solution"<0;}
}
dfs(be);
while(!s.empty()){
Edge t = s.top();s.pop();
cout<' ';
if(t.dir == 0) cout<<"-"<else cout<<"+"<return 0;
}
다음으로 전송:https://www.cnblogs.com/Tuesdayzz/p/5758657.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.