L2 010 排座位 25 分

2021-09-28 16:46:44 字數 2555 閱讀 1275

布置宴席最微妙的事情,就是給前來參宴的各位賓客安排座位。無論如何,總不能把兩個死對頭排到同一張宴會桌旁!這個艱鉅任務現在就交給你,對任何一對客人,請編寫程式告訴主人他們是否能被安排同席。

輸入第一行給出3個正整數:n(≤100),即前來參宴的賓客總人數,則這些人從1到n編號;m為已知兩兩賓客之間的關係數;k為查詢的條數。隨後m行,每行給出一對賓客之間的關係,格式為:賓客1 賓客2 關係,其中關係為1表示是朋友,-1表示是死對頭。注意兩個人不可能既是朋友又是敵人。最後k行,每行給出一對需要查詢的賓客編號。

這裡假設朋友的朋友也是朋友。但敵人的敵人並不一定就是朋友,朋友的敵人也不一定是敵人。只有單純直接的敵對關係才是絕對不能同席的。

對每個查詢輸出一行結果:如果兩位賓客之間是朋友,且沒有敵對關係,則輸出no problem;如果他們之間並不是朋友,但也不敵對,則輸出ok;如果他們之間有敵對,然而也有共同的朋友,則輸出ok but...;如果他們之間只有敵對關係,則輸出no way

7 8 4

5 6 1

2 7 -1

1 3 1

3 4 1

6 7 -1

1 2 1

1 4 1

2 3 -1

3 45 7

2 37 2

no problem

okok but...

no way

#include#include#include#includeusing namespace std;

// 打表作朋友之間的關係

vector> maps(110);

int n,m,k;

int p1,p2,rel;

int main()else }

/*set:: iterator it;

vector>::iterator iter;

setvec_temp;

for( iter =maps.begin();iter!=maps.end();iter++)

cout<::iterator it;

//用來查詢是否是敵人

set::iterator it2;

//用來遍歷迴圈

set::iterator it3;

//用來查詢是否有朋友的朋友

set::iterator it4;

for(int i=0;i>p1>>p2;

//用來取出兩張對照表

setsp1,sp2;

sp1=maps[p1];

sp2=maps[p2];

it=sp1.find(p2);

it2=sp1.find(-p2);

for(it3=sp1.begin();it3!=sp1.end();it3++)

} if(it != sp1.end())else if (it2 != sp1.end()&&it4==sp2.end())else if (it4!=sp2.end()&&it2 != sp1.end())else

}return 0;

}

#python 沒寫好,有乙個點超時了,然後去換c++寫了

inputs=input().split()

maps=[for i in range(110)]

# print(inputs[2])

for i in range(int(inputs[1])):

p1,p2,relation=map(int,input().split())

# print(p1,p2,relation)

if relation==1:

elif relation==-1:

for i in range(int(inputs[2])):

p1, p2 = map(int, input().split())

mp1=maps[p1]

mp2=maps[p2]

relations=[val for val in mp1 if val in mp2]

# 第二種取交集的方法 感覺還更慢了 list(set(mp1)&set(mp2))

# relations=[val for val in mp1 if val in mp2]

if -p1 in mp2 and -p2 in mp1 and len(relations)<=0 :

print("no way")

elif p1 in mp2 and p2 in mp1:

print("no problem")

elif len(relations)>0:

print("ok but...")

else:

print("ok")

# print(maps)

L2 010 排座位(25 分)

布置宴席最微妙的事情,就是給前來參宴的各位賓客安排座位。無論如何,總不能把兩個死對頭排到同一張宴會桌旁!這個艱鉅任務現在就交給你,對任何一對客人,請編寫程式告訴主人他們是否能被安排同席。輸入格式 輸入第一行給出3個正整數 n 100 即前來參宴的賓客總人數,則這些人從1到n編號 m為已知兩兩賓客之間...

L2 010 排座位 (25 分)

l2 010 排座位 25 分 布置宴席最微妙的事情,就是給前來參宴的各位賓客安排座位。無論如何,總不能把兩個死對頭排到同一張宴會桌旁!這個艱鉅任務現在就交給你,對任何一對客人,請編寫程式告訴主人他們是否能被安排同席。輸入第一行給出3個正整數 n 100 即前來參宴的賓客總人數,則這些人從1到n編號...

L2 010 排座位 25 分

布置宴席最微妙的事情,就是給前來參宴的各位賓客安排座位。無論如何,總不能把兩個死對頭排到同一張宴會桌旁!這個艱鉅任務現在就交給你,對任何一對客人,請編寫程式告訴主人他們是否能被安排同席。輸入第一行給出3個正整數 n 100 即前來參宴的賓客總人數,則這些人從1到n編號 m為已知兩兩賓客之間的關係數 ...