OGman

导航

1032 Sharing

本题只需要输出地址,如果给出的所有节点都属于这两个单词,那只需把所有next值保存,如果两个单词有共同后缀,出现过两次的next值就是所求地址。如果-1出现两次,说明两个单词无共同后缀。基于这个思路,写了以下投机取巧代码,测试用例通过,但线上测试的测试点只过了前两个。取巧失败,看来姥姥是防了一手的。应该是在节点中间加入了不属于这两个单词并且指向-1或是所求地址的点。

#include <iostream>
using namespace std;

int nxt[100002] = { 0 };

int main()
{
    int a1, a2, n;
    cin >> a1 >> a2 >> n;
    for (int i = 0; i != n; i++) {
        int adr,next;
        char l;
        cin >> adr >> l>> next;
        if (next != -1) {
            nxt[next]++;
        }
        else nxt[100001]++;
    }
    if (nxt[100001] == 2) {
        cout << -1;
    }
    else {
        for (int i = 0; i != 100001; i++) {
            if (nxt[i] == 2) {
                cout << i;
                break;
            }
        }
    }
    return 0;
}

 

posted on 2018-08-29 15:58  OGman  阅读(107)  评论(0)    收藏  举报