HDU2094 拓扑排序的唯一性 xingxing在努力
建图然后判断唯一性
#include <cstdio> #include <algorithm> #include <cstring> #include <map> #include <string> #include <iostream> using namespace std; map<string, int> hs; int cnt = 0; int in[1000 + 10]; int Map[1001][1001]; int main() { int n; while(scanf("%d", &n)==1 && n) { hs.clear(); memset(in, 0, sizeof(in)); memset(Map, 0, sizeof(Map)); cnt = 0; string s1, s2; for(int i=0; i<n; i++) { cin>>s1>>s2; if(hs.find(s1)==hs.end()) hs[s1] = cnt++; if(hs.find(s2)==hs.end()) hs[s2] = cnt++; int u = hs[s1], v = hs[s2]; if(Map[u][v] == 0) { Map[u][v] = 1; in[v]++; } } int res = 0; for(int i=0; i<cnt; i++) if(in[i]==0) res++; if(res == 1) printf("Yes\n"); else printf("No\n"); } return 0; }

浙公网安备 33010602011771号