PAT 1032. Sharing (25)
2015-03-14 11:32
471 查看
//
/* 方法一 accepted
使用flag的方法,第一次遍历第一个链表,标记经过的flag为true;再遍历第二个链表,如果有flag已经为true则表示为所求的结果。
*/
/* 方法二:第五个case错误,23分。
后面注释的代码是直接将所有的next都保存到一个数组里面,进行查找出现两次的数据,即为重复出现的结果。
但是这种方法,不能够排除无效的节点,所以导致倒数第二个case不正确。
注意lower_bound, find, binary_search的使用方法。
*/
#include <iostream>
using namespace std;
int List[1000005];
bool flag[1000005] = {false};
int result = -1;
int main()
{
int Start1, Start2, N;
scanf("%d %d %d", &Start1, &Start2, &N);
fill(List, List+1000005, -1);
while(N--)
{
int t1, t2;
char c;
cin >> t1 >> c >> t2;
List[t1] = t2;
}
int t = Start1;
while(t!=-1)
{
flag[t] = true;
t = List[t];
}
t = Start2;
while(t!=-1)
{
if (flag[t] == true)
{
result = t;
break;
}
flag[t] = true;
t = List[t];
}
if (result == -1)
{
cout << "-1";
}
else
printf("%05d", result);
return 0;
}
//#include<iostream>
//#include <vector>
//#include <algorithm>
//using namespace std;
//
//int result = -1;
//
//int WordStart1, WordStart2;
//
//bool cmp(int t, int k)
//{
// if (t == k)
// {
// result = t;
// }
// return t < k;
//}
//int main()
//{
// int N;
// scanf("%d %d %d", &WordStart1, &WordStart2, &N);
// int tmp;
// char c;
// int ne;
// int i;
// vector<int> next;
// for (i = 0;i<N;i++)
// {
// scanf("%d %c %d", &tmp, &c, &ne);
// next.push_back(ne);
// }
// sort(next.begin(), next.end(), cmp);
//
// if(result != -1)
// {
// printf("%05d", result);
// }
// else
// cout << "-1";
//
// return 0;
//}
/* 方法一 accepted
使用flag的方法,第一次遍历第一个链表,标记经过的flag为true;再遍历第二个链表,如果有flag已经为true则表示为所求的结果。
*/
/* 方法二:第五个case错误,23分。
后面注释的代码是直接将所有的next都保存到一个数组里面,进行查找出现两次的数据,即为重复出现的结果。
但是这种方法,不能够排除无效的节点,所以导致倒数第二个case不正确。
注意lower_bound, find, binary_search的使用方法。
*/
#include <iostream>
using namespace std;
int List[1000005];
bool flag[1000005] = {false};
int result = -1;
int main()
{
int Start1, Start2, N;
scanf("%d %d %d", &Start1, &Start2, &N);
fill(List, List+1000005, -1);
while(N--)
{
int t1, t2;
char c;
cin >> t1 >> c >> t2;
List[t1] = t2;
}
int t = Start1;
while(t!=-1)
{
flag[t] = true;
t = List[t];
}
t = Start2;
while(t!=-1)
{
if (flag[t] == true)
{
result = t;
break;
}
flag[t] = true;
t = List[t];
}
if (result == -1)
{
cout << "-1";
}
else
printf("%05d", result);
return 0;
}
//#include<iostream>
//#include <vector>
//#include <algorithm>
//using namespace std;
//
//int result = -1;
//
//int WordStart1, WordStart2;
//
//bool cmp(int t, int k)
//{
// if (t == k)
// {
// result = t;
// }
// return t < k;
//}
//int main()
//{
// int N;
// scanf("%d %d %d", &WordStart1, &WordStart2, &N);
// int tmp;
// char c;
// int ne;
// int i;
// vector<int> next;
// for (i = 0;i<N;i++)
// {
// scanf("%d %c %d", &tmp, &c, &ne);
// next.push_back(ne);
// }
// sort(next.begin(), next.end(), cmp);
//
// if(result != -1)
// {
// printf("%05d", result);
// }
// else
// cout << "-1";
//
// return 0;
//}
相关文章推荐
- PAT (Advanced Level)1032. Sharing (25)
- 【PAT】1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT甲 1032. Sharing (25)
- 1032. Sharing (25)-PAT
- PAT1032: Sharing (25)
- PAT 1032. Sharing (25)(求俩个字符串的交点)
- 1032. Sharing (25) PAT甲级
- PAT - 甲级 - 1032. Sharing (25)(链表)
- Python实现Pat 1032. Sharing (25)
- PAT (Advanced Level) Practise 1032 Sharing (25)
- 1032. Sharing (25)-PAT甲级真题
- PAT甲级1032. Sharing (25)
- PAT 1032. Sharing (25)
- [PAT]1032. Sharing (25)(Java实现)
- Python实现Pat 1032. Sharing (25)
- PAT 1032. Sharing (25) 链表和栈的运用, 字符的读取
- pat 1032. Sharing (25)
- PAT 1032. Sharing (25)
- 浙大2012上机 PAT 1032. Sharing (25)